Python pytest.u使用cmd行选项的夹具

Python pytest.u使用cmd行选项的夹具,python,selenium-webdriver,pytest,Python,Selenium Webdriver,Pytest,是否可以使用pytest_addoption(解析器)创建pytest.yield_fixture使用的列表?i、 e def pytest_addoption(parser): parser.addoption("-foo", action="store",defaults="1,2,3") @pytest.yield_fixture(params=request.config.getoption('--foo').split(',')) def test_bar(request):

是否可以使用pytest_addoption(解析器)创建pytest.yield_fixture使用的列表?i、 e

def pytest_addoption(parser):
  parser.addoption("-foo", action="store",defaults="1,2,3")

@pytest.yield_fixture(params=request.config.getoption('--foo').split(','))
def test_bar(request):
  do_something(request.param)

假设您有6个浏览器,并且希望能够对1个浏览器运行测试,作为快速检查。我不知道如何在测试发现/生成之前就位。Help

这显然不起作用,因为在全局模块作用域中不存在
请求
变量,而全局模块作用域是在执行decorator中的表达式时存在的。解决这个问题的方法是使用钩子:

# conftest.py
def pytest_addoption(parser):
    parser.addoption('--foo', action='store', defaults='1,2,3')

def pytest_configure(config):
    config.foo = config.getoption('foo').split(',')

def pytest_generate_tests(metafunc):
    if 'foo' in metafunc.fixturenames:
        metafunc.parametrize('foo', metafunc.config.foo)

# test_bar.py
def test_bar(foo):
    do_something(foo)