2012-10-08 21 views
12

Il titolo praticamente riassume: ho cercato di usare assertEqual per testare una funzione che restituisce un oggetto generatore, ma che si traduce in:Unità testare una funzione che restituisce un oggetto generatore

AssertionError: generator object genexpr> at 0x2e70c80> != (1,2,...)

c'è un modo intelligente per farlo a parte l'iterazione sulla funzione e l'esecuzione di assertEqual per ogni singolo output?

risposta

15
assertEqual(tuple(generator_object), (1, 2, ...)) 

se si tratta di un generatore di infinito, o semplicemente desidera guardare i primi risultati n per qualche motivo, è possibile combint questo con itertools.islice

assertEqual(tuple(islice(generator_object, n)), (1, 2, ...)) 
+1

Questo è quello che mi piace di Python, c'è sempre un modo più semplice (più pulito) di fare le cose. Grazie! –

0

Usa next() sull'oggetto generatore.

assertEqual(next(generator_object), (1, 2, ...)) 
Problemi correlati