单元测试返回生成器对象的函数

时间:2012-10-08 05:29:45

标签: python

标题几乎总结了一下:我试图使用assertEqual来测试一个返回生成器对象的函数,但结果是:

  

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

除了迭代函数并为每个输出运行assertEqual之外,还有一种聪明的方法吗?

2 个答案:

答案 0 :(得分:15)

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

如果它是无限生成器,或者您只是想出于某种原因查看第一个n结果,可以将其与itertools.islice

结合使用
assertEqual(tuple(islice(generator_object, n)), (1, 2, ...))

答案 1 :(得分:0)

在生成器对象上使用next()

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