我想把一个列表作为参数传递给 fixture,根据 if 条件判断是否需要传递。有没有办法做到这一点?
举个例子,请看下面的代码。
我想要实现的是,如果我在 pytest 命令行参数中传递了 odd 作为 num 类型,那么作为参数传递给 fixture 的列表应该是奇数,而对于 even 参数则是偶数。
注:我正在使用 pytest-xdist 多次运行这些测试,因此我使用 sys.stderr 打印输出。
文件名:conftest.py
举个例子,请看下面的代码。
我想要实现的是,如果我在 pytest 命令行参数中传递了 odd 作为 num 类型,那么作为参数传递给 fixture 的列表应该是奇数,而对于 even 参数则是偶数。
注:我正在使用 pytest-xdist 多次运行这些测试,因此我使用 sys.stderr 打印输出。
文件名:conftest.py
def pytest_addoption(parser):
parser.addoption('--type', action='store', help='Number of times to repeat each test')
文件名:test_file.py
import pytest, sys
lis = []
@pytest.fixture()
def nested_fixture(pytestconfig):
global lis
numtype = str(pytestconfig.getoption("type"))
if numtype == "odd":
lis.append(1)
lis.append(3)
if numtype == "even":
lis.append(2)
lis.append(4)
return lis
@pytest.fixture(params = nested_fixture)
def fixture_function(request):
return request.param
def test_function(fixture_function):
print >> sys.stderr , fixture_function
我使用终端中的以下命令执行此操作:
pytest -sv -n 2 --type odd