如何测试Python函数是否抛出异常?
我们编写一个单元测试,仅在函数未抛出预期异常时失败。
我们也测试Python函数是否抛出异常。
例如,看看我们在Python shell中粘贴的样本代码,以测试Python的类型安全性:
示例
import unittest
class MyTestCase(unittest.TestCase):
def test_1_cannot_add_int_and_str(self):
with self.assertRaises(TypeError):
1 + '1'
def test_2_cannot_add_int_and_str(self):
import operator
self.assertRaises(TypeError, operator.add, 1, '1')
unittest.main(exit=False)
运行测试
输出
终端输出如下-
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
测试一使用assertRaises作为上下文管理器,确保错误被正确捕获和清理,同时记录下来。
我们也可以写一个没有上下文管理器的测试,见测试二。第一个参数将是您希望引发的错误类型,第二个参数将是您正在测试的函数,其余的args和关键字args将传递给该函数。
使用上下文管理器会更简单和易读。
我们看到,正如我们所期望的那样,尝试将1和’1’相加会导致TypeError。