13

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

AssertionError: 生成器对象geneexpr> at 0x2e70c80> != (1,2,...)

除了迭代函数并为每个单独的输出运行 assertEqual 之外,是否有一种聪明的方法可以做到这一点?

4

2 回答 2

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

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

assertEqual(tuple(islice(generator_object, n)), (1, 2, ...))
于 2012-10-08T05:34:35.273 回答
-1

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

assertEqual(next(generator_object), (1, 2, ...))
于 2016-12-12T00:00:19.077 回答