如何选择在参数化测试中使用的夹具

时间:2018-11-19 21:34:01

标签: python pytest

我的测试套件具有多个夹具,我想将这些夹具传递到参数化测试中,请参见下面的示例:

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还有其他我不想传递给测试的依赖项。

我应该指出,我确实希望两个具有夹具,因为它们产生的对象相关但具有足够的相似性以进行不同的测试,但是它们具有共同点,这就是为什么我希望在某些情况下进行相同的测试。

0 个答案:

没有答案