是否可以使用pytest_addoption(parser)创建pytest.yield_fixture使用的列表?即。
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个浏览器运行测试作为快速检查。我无法弄清楚如何在测试发现/生成之前就位。帮助
答案 0 :(得分:0)
这显然不起作用,因为全局模块范围中不存在request
变量,这是执行装饰器中的表达式的时候。解决这个问题的方法是使用pytest_generate_tests钩子:
# 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)