0
Ich habe eine gegeben Funktion (die ich nicht ändern kann) von der Form:Pythonic Way alle Kombinationen von Funktion testen Parameter
def foo(bar=False, baz=False, ban=False, baf=False, bal=False):
...
In einigen unittest Code, würde Ich mag Tests auf alle ausführen die 2 Anrufe:
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)
(im Interesse der Frage, jeden Anruf ausführen, und assertEqual
, dass das Ergebnis 10.)
Was ist ein pythonischer Weg?
'itertools.product (((False, True),) * 5)' –
@DavidHeffernan Danke. –
@DavidHeffernan: Sie haben vergessen, das Tupel zu entpacken; es sollte 'itertools.product (* ((False, True),) * 5)' sein. – user2357112