我有一个生成器对象,我想对其进行单元测试。它经历了一个循环,当循环结束时某个变量仍然为 0 时,我引发了一个异常。我想对此进行单元测试,但我不知道如何进行。 以这个示例生成器为例:
class Example():
def generatorExample(self):
count = 0
for int in range(1,100):
count += 1
yield count
if count > 0:
raise RuntimeError, 'an example error that will always happen'
我想做的是
class testExample(unittest.TestCase):
def test_generatorExample(self):
self.assertRaises(RuntimeError, Example.generatorExample)
但是,生成器对象不可调整,这给出了
TypeError: 'generator' object is not callable
那么如何测试生成器函数中是否引发了异常?
最佳答案
assertRaises
自 Python 2.7 起就是一个上下文管理器,所以你可以这样做:
class testExample(unittest.TestCase):
def test_generatorExample(self):
with self.assertRaises(RuntimeError):
list(Example().generatorExample())
如果你有 Python < 2.7 那么你可以使用 lambda
来耗尽生成器:
self.assertRaises(RuntimeError, lambda: list(Example().generatorExample()))
关于python - 如何在生成器对象中使用 unittest 的 self.assertRaises 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599610/