我有一个包含可能有效值映射的字典。如何使用这个映射来测试我的验证函数是否工作?我不知道如何在pytest中为这个映射正确使用@parameterize
选项。你知道吗
我的第一次尝试是:
TEST_MAP = {
'key1': ['val1', 'val2', 'val3'],
'key2': ['val1', 'val2', 'val4', 'val5'],
'key3': ['val2', 'val4'],
'key4': ['val3', 'val4', 'val6'],
}
@pytest.mark.parametrize("map", TEST_MAP)
def test_map(self, map):
...
validate()
assert ...
问题是它只在键上迭代。我还想迭代每个键的值。我需要测试键/值组合。你知道吗
如何调整此测试用例的参数以测试映射中的调用键/值对?你知道吗
我不想迭代测试中每个键的值。我希望每个键/值都是它自己的唯一测试。你知道吗
以Amit编写的内容为基础,不需要单独的函数从字典中获取条目。
@pytest.mark.parametrize("map", TEST_MAP.items())
就可以了。或者可以在test_map
函数中使用print(TEST_MAP.items())
。你知道吗当我运行它时,我收到的输出格式如下:
显然有必要使用嵌套循环来解包参数集
[(k, x) for k, v in TEST_MAP.items() for x in v]
将列表的dict解压为2元组
根据注释更新以使用生成器获取所需的组合:
相关问题 更多 >
编程相关推荐