Pythonic方法测试函数参数的所有组合

时间:2016-03-29 19:38:40

标签: python unit-testing combinations

我有一个给定功能(我无法改变)的形式:

def foo(bar=False, baz=False, ban=False, baf=False, bal=False):
    ...

在某些unittest代码中,我想对所有2个 5 调用执行测试:

foo(bar=False, baz=False, ban=False, baf=False, bal=False)
foo(bar=False, baz=False, ban=False, baf=False, bal=True)
foo(bar=False, baz=False, ban=False, baf=True, bal=False)
foo(bar=False, baz=False, ban=False, baf=True, bal=True)
...
foo(bar=True, baz=True, ban=True, baf=True, bal=True)

(为了问题,请运行每个调用,assertEqual结果为10。)

什么是pythonic方式?

1 个答案:

答案 0 :(得分:2)

您可以使用itertools.product()

import itertools
for combination in itertools.product(*[(True, False)]*5):
    assertEqual(foo(*combination), 10)