如何测试 Python 函数是否抛出异常?


我们编写一个 unittest,只有当函数没有抛出预期异常时才会失败。

我们还会测试 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。

更新于:2020年6月12日

287 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告