想象一下以下的测试套件
import pytest
@pytest.fixture(params=1, 2, 3)
def shape(request):
return request.param
@pytest.fixture
def data(shape):
return shape
def test_resize(data, shape):
pass
我有两个灯具data
和shape
。 data
取决于fixture shape
,并且正在为每个可能的值生成。但在test_resize
我希望测试data
和shape
的所有可能组合:
等。通过上面的实现,它不会扩展carthesian产品:
有没有办法让py.test将灯具扩展到所有可能的组合?
答案 0 :(得分:2)
正如您的输出所示,shape
已参数化但data
未参数化,因此每个实例的data
夹具只会有一个实例shape
夹具。我也会参数化data
。然后,仍然让data
夹具依赖于shape
,您将得到您想要的产品:
import pytest
fixture_params = (1, 2, 3)
@pytest.fixture(params=fixture_params)
def shape(request):
return request.param
@pytest.fixture(params=fixture_params)
def data(request, shape):
print(request.param)
return request.param
def test_resize(data, shape):
print(data, shape)
assert 0 and 'assert to show prints'