我想参数化pytest fixture的输出。例如,让我们说我有两个灯具:
# contents of test_param.py
import pytest
@pytest.fixture(params=[1,2])
def fixture_1(request):
return request.param
@pytest.fixture
def fixture_2(fixture_1):
for num in range(5): # the output here should be parametrized
return '%d_%s' % (fixture_1, num) # but only returns first iteration
def test_params(fixture_2):
print (fixture_2)
assert isinstance(fixture_2, str)
然后当我运行以下内容时:
py.test test_param.py
只有夹具2的第一次迭代才能为夹具1中的每个参数传递。我如何参数化fixture_2的输出,以便for循环中的每次迭代都传递给test_params函数?
编辑:假设第二个灯具不能以与第一个相同的方式进行参数化,因为在实际问题中,第二个参数的输出取决于第一个灯具的输入。
答案 0 :(得分:0)
您正在使用从灯具功能返回的return
。
为什么不像第一个灯具那样参数化第二个灯具?
# contents of test_param.py
import pytest
@pytest.fixture(params=[1,2])
def fixture_1(request):
return request.param
@pytest.fixture(params=list(range(5)))
def fixture_2(fixture_1, request):
return '%d_%s' % (fixture_1, request.param)
def test_params(fixture_2):
print (fixture_2)
assert isinstance(fixture_2, str)