Pytest异常处理
Pytest 异常处理
简介
在 Pytest 中,异常处理是指在测试过程中捕获和处理代码中抛出的异常。异常处理是一种重要的测试技术,可以用来验证代码在预期抛出异常的情况下是否正确进行处理。在 Pytest 中,可以使用pytest.raises
上下文管理器来捕获代码执行过程中抛出的特定异常,并允许对该异常进行断言。
Pytest 异常处理的优点
-
简单易用:Pytest 异常处理使用
pytest.raises
上下文管理器来捕获和断言代码中的异常。这种方法非常简洁明了,使得测试异常情况的代码编写变得更加简单和直观。 -
方便的断言和自定义:使用
pytest.raises
,可以轻松地对捕获的异常进行断言。通过对异常的属性或字符串表示进行断言,可以验证异常是否与预期一致。 -
可扩展性:Pytest 异常处理不仅可以捕获特定的异常,还可以处理多个异常。通过在
pytest.raises
上下文管理器中使用逗号分隔的异常列表,可以捕获和处理多个异常情况。这使得异常处理更加灵活和可扩展。 -
可读性和可维护性:Pytest 异常处理使用了 Python 的上下文管理器机制,使得代码更加清晰和易于理解。在使用
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 的官网,地址如下:
https://docs.pytest.org/en/7.1.x/reference/reference.html#pytest-raises
代码示例:
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 异常处理的优点。
- Pytest 异常处理的方法。