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

Joh*_*ers 12 python

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

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

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

Joh*_*ooy 15

assertEqual(tuple(generator_object), (1, 2, ...))
Run Code Online (Sandbox Code Playgroud)

如果它是一个无限的发生器,或者你只是想n出于某种原因看第一个结果,你可以将它与之结合起来itertools.islice

assertEqual(tuple(islice(generator_object, n)), (1, 2, ...))
Run Code Online (Sandbox Code Playgroud)

  • 这就是我喜欢 Python 的地方,总有一种更简单(更干净)的方式来做事。谢谢! (2认同)