pytest:将所有夹具排列实现为测试输入

时间:2015-09-26 14:13:19

标签: python unit-testing pytest

我有一个测试用例涉及字典键/值的相当大的笛卡尔积(数千个排列)。被测试的函数将吐出list个MD5总和,每个总和与给定的排列有1-1对应关系。

正在测试的功能:

 def get_all_perms():
     ... return big list of MD5 sums

我正在尝试使用pytest fixture来生成排列空间。因此,我有一堆如下组成的装置:

@pytest.fixture(params=[True,False])
def build_pair_1(request):
    return ('KEY_1', request.param)

@pytest.fixture(params=[True,False])
def build_pair_2(request):
    return ('KEY_2', request.param)

@pytest.fixture(params=[True,False])
def build_pair_3(request):
    return ('KEY_3', request.param)

@pytest.fixture
def build_dict(build_pair_1, build_pair_2, build_pair_3)

    return dict([
            build_pair_1,
            build_pair_2,
            build_pair_3,
        ])

@pytest.fixture
def get_sums(build_dict):
    return sum(build_dict)

这可以很好地创建所有排列。但是如果我的理解是正确的并且我将get_sums作为参数添加到测试中,那么每次总和都会得到一个测试执行。我需要做的是从get_sums中取出所得到的排列集,将其填入列表中,并将其与我测试的函数的结果进行比较。类似于......的东西。

def test_result_of_get_all_perms:
    result = get_all_perms()
    for sum in get_sums():
        assert sum in result

有没有办法迭代灯具的结果?

0 个答案:

没有答案