我有一个给定功能(我无法改变)的形式:
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方式?
答案 0 :(得分:2)
您可以使用itertools.product()
:
import itertools
for combination in itertools.product(*[(True, False)]*5):
assertEqual(foo(*combination), 10)