我有一个测试用例涉及字典键/值的相当大的笛卡尔积(数千个排列)。被测试的函数将吐出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
有没有办法迭代灯具的结果?