2012-10-08 31 views
12

标题几乎总结起来的函数:我尝试使用assertEqual便来测试返回一个生成器对象的功能,但结果:单元测试,它返回一个发电机对象

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

是否有除了迭代函数并为每个单独的输出运行assertEqual之外,这种方法是否巧妙?

回答

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

,如果它是一个无限生成,或者你只是想看看第一n结果由于某种原因,你可以用itertools.islice

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

这就是我喜欢Python的东西,总是有一种更简单(更干净)的方式来做事情。谢谢! –

0

发电机对象使用next() combint这一点。

assertEqual(next(generator_object), (1, 2, ...)) 
相关问题