2012-10-08 12 views
12

El título prácticamente lo resume todo: He intentado utilizar assertEqual para probar una función que devuelve un objeto generador, pero que se traduce en:Unidad de prueba de una función que devuelve un objeto generador de

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

¿Hay una forma inteligente de hacer esto aparte de iterar sobre la función y ejecutar assertEqual para cada salida individual?

Respuesta

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

si se trata de un generador infinito, o si sólo desea ver los primeros resultados n por alguna razón, puede combint esto con itertools.islice

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

Esto es lo que me gusta de Python, siempre hay una manera más fácil (más limpia) de hacer las cosas. ¡Gracias! –

0

Uso next() en el objeto generador.

assertEqual(next(generator_object), (1, 2, ...)) 
Cuestiones relacionadas