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


我们编写一个仅在某个函数未抛出预期异常时失败的单元测试。

我们也测试 Python 函数是否抛出异常。

例如,查看我们将粘贴到 Python 外壳程序中的示例代码,以测试 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。

更新于:12-6-2020

285 次浏览

开启你的职业生涯

通过完成课程获取认证

开始
广告