gpt4 book ai didi

python - 如何在生成器对象中使用 unittest 的 self.assertRaises 异常?

转载 作者:太空狗 更新时间:2023-10-29 18:16:31 24 4
gpt4 key购买 nike

我有一个生成器对象,我想对其进行单元测试。它经历了一个循环,当循环结束时某个变量仍然为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com