我得到了UI测试(pytest)和Selenium网格。我想同时在不同的浏览器上运行我的套装。例如:
py.test test.py --browser "internet explorer;chrome"
我希望Selenium网格中的不同主机上有两个并行会话。
test.py:
class TestSuit:
def test_1(self, app):
app.do_smth()
assert True
def test_2(self, app):
app.do_smth()
assert True
application.py:
class Application:
def __init__(self, browser_name):
self.driver = webdriver.Remote(
command_executor='http://host:port/wd/hub,
desired_capabilities={'browserName': browser_name}
)
conftest.py:
def pytest_addoption(parser):
parser.addoption("--browser", action="store")
def pytest_generate_tests(metafunc):
metafunc.parametrize(
'browser_name',
metafunc.config.getoption('browser').split(';'),
scope='session'
)
@pytest.fixture(scope='session')
def app(browser_name):
return Application(browser_name)
但我会在第一台使用IE的主机上运行我的测试,然后在第二台主机上运行Chrome。
如何同时在每台主机上运行两个并行会话?
答案 0 :(得分:0)
您可以尝试使用线程,因为上面的代码不允许并行执行。
import threading
def worker(num):
"""your required work"""
print num
return
threads = []
for i in range(2):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()