2012-10-08 3 views
12

Der Titel ziemlich viel bringt es auf den zurückgibt: Ich habe versucht, assertEqual zu verwenden, um eine Funktion zu testen, die einen Generator-Objekt zurückgibt, aber das ergibt:Unit-Tests eine Funktion, die einen Generator Objekt

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

Gibt es eine clevere Möglichkeit, dies zu tun, als über die Funktion zu iterieren und assertEqual für jeden einzelnen Ausgang auszuführen?

Antwort

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

wenn es ein unendlicher Generator ist, oder Sie wollen nur aus irgendeinem Grunde in den ersten n Ergebnisse betrachten, können Sie diese combint mit itertools.islice

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

Das ist, was ich an Python mag, es gibt immer einen einfacheren (saubereren) Weg, Dinge zu tun. Vielen Dank! –

0

Verwenden next() am Generator-Objekt.

assertEqual(next(generator_object), (1, 2, ...)) 
Verwandte Themen