小能豆

如何测试 Python 函数是否引发异常?

javascript

如何测试 Python 函数是否引发异常?


阅读 40

收藏
2024-09-02

共1个答案

小能豆

要测试 Python 函数是否抛出异常,可以使用unittest模块assertRaises方法pytest框架的raisesfu

使用unittestassertRaises

你可以使用以下方法unittest来测试函数是否引发异常:

  1. 导入unittest模块。
  2. assertRaises在内使用unittest.TestCase来验证是否引发异常。
import unittest

def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero")
    return a / b

class TestDivision(unittest.TestCase):
    def test_divide_by_zero(self):
        with self.assertRaises(ValueError) as context:
            divide(10, 0)
        self.assertEqual(str(context.exception), "Cannot divide by zero")

if __name__ == "__main__":
    unittest.main()

解释

  • with self.assertRaises(ExceptionType)创建一个期望引发指定内容的上下文管理器ExceptionType
  • context.exception提供对异常对象的访问,允许您执行额外的检查,例如验证异常消息。

使用pytestraises

如果您正在使用pytest,则可以使用该raises函数来实现类似的目的:

import pytest

def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero")
    return a / b

def test_divide_by_zero():
    with pytest.raises(ValueError, match="Cannot divide by zero"):
        divide(10, 0)

解释

  • pytest.raises(ExceptionType, match="Expected message")是一个上下文管理器,用于检查指定的ExceptionType
  • match参数是可选的,但允许您使用正则表达式模式测试异常的消息。

概括

  • 如果您更喜欢内置框架,unittest请使用。assertRaises``unittest
  • 如果您在测试中使用,pytest请使用,因为它提供了更简洁的语法和强大的功能。raises``pytest
2024-09-02