我的测试套件具有多个夹具,我想将这些夹具传递到参数化测试中,请参见下面的示例:
import pytest
@pytest.fixture(params=[
[1,2,3],[1],[]
]
def fixture1(request):
return list(request.param)
@pytest.fixture(params=[
{'a':1,'b':2,'c':3},{'a':1},{}
]
@pytest.fixture
def fixture2(request):
return dict(request.param)
@pytest.mark.parametrize(['structure'],[(fixture1,fixture2)])
def test_structure_has_length(structure):
assert len(structure)
这基本上是我要执行的操作,但这会导致TypeError
,因为structure
变量实际上是一个函数。在上面的示例中,我可以将assert行更改为:
assert len(structure())
但是在我的代码库中,fixutres还有其他我不想传递给测试的依赖项。
我应该指出,我确实希望两个具有夹具,因为它们产生的对象相关但具有足够的相似性以进行不同的测试,但是它们具有共同点,这就是为什么我希望在某些情况下进行相同的测试。