2016-03-29 16 views
0

Fonksiyonu Tüm Kombinasyonları parametreleri test etmek: Bazı unittest kodundaPythonic Yolu Bir <em>verilen</em> formunun (I değiştiremezsiniz) fonksiyonu var

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

, tüm ilgili testlerini gerçekleştirmek istiyorum 2 aramalar:

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) 

(sonucu 10 olup, her bir çağrı çalıştırmak söz uğruna, ve assertEqual için)

Bunu yapmanın pythonik bir yolu nedir?

+0

'itertools.product (((Yanlış, Doğru),) * 5)' –

+0

@DavidHeffernan teşekkür ederiz. –

+2

@DavidHeffernan: Tuple paketini açmayı unutmuşsunuz; itertools.product (* ((Yanlış, Doğru),) * 5) olmalıdır. – user2357112

cevap

2

Sen itertools.product() kullanabilirsiniz:

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