使用pytest在不同的浏览器上运行Selenium测试

时间:2017-12-07 05:44:42

标签: python selenium pytest

我得到了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。

如何同时在每台主机上运行两个并行会话?

1 个答案:

答案 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()