如何编写一个只有在函数没有抛出预期异常时才会失败的单元测试?
原文由 Daryl Spitzer 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何编写一个只有在函数没有抛出预期异常时才会失败的单元测试?
原文由 Daryl Spitzer 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Python 2.7 开始,您可以使用上下文管理器来获取抛出的实际异常对象:
import unittest
def broken_function():
raise Exception('This is broken')
class MyTestCase(unittest.TestCase):
def test(self):
with self.assertRaises(Exception) as context:
broken_function()
self.assertTrue('This is broken' in context.exception)
if __name__ == '__main__':
unittest.main()
http://docs.python.org/dev/library/unittest.html#unittest.TestCase.assertRaises
在 Python 3.5 中,您必须将 context.exception
包装在 str
中,否则您将得到 TypeError
self.assertTrue('This is broken' in str(context.exception))
原文由 Art 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
使用 unittest 模块中的 —
TestCase.assertRaises
(或TestCase.failUnlessRaises
),例如: