Skip to content

Pytest 异常处理


简介

异常处理是指在测试过程中捕获和处理代码中抛出的异常。异常处理是一种重要的测试技术,可以用来验证代码在预期抛出异常的情况下是否正确进行处理。

在 Pytest 中,可以使用 pytest.raises 上下文管理器来捕获代码执行过程中抛出的特定异常,并允许对该异常进行断言。


常用的异常处理方法

  • try...except
  • pytest.raises()

try ...except 的使用

代码示例:

try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常

try :
    a = int(input("输入被除数"))
    b = int(input("输入除数"))
    c = a / b
    print("您输入的两个数相除的结果是:", c)
except (ValueError, ArithmeticError):
    print("程序发生了数字格式异常、算数异常之一")
except :
    print("未知异常")
print("程序继续运行")

运行结果:


pytest.raises() 的使用

  • 可以捕获特定的异常。
  • 获取捕获的异常的细节(异常类型,异常信息)。
  • 发生异常,后面的代码将不会被执行。

pytest.raises() 用法详细讲解可参考 Pytest 的官网


代码示例:

import pytest

def test_raise():
    with pytest.raises(ValueError, match='must be 0 or None'):
        raise ValueError("value must be 0 or None")

def test_raise1():
    with pytest.raises(ValueError) as exc_info:
        raise ValueError("value must be 42")
    assert exc_info.type is ValueError
    assert exc_info.value.args[0] == "value must be 42"

运行结果:


总结

  • Pytest 异常处理的方法。