How to assert expected exceptions in pytest

To assert expected exceptions in pytest, you can use the pytest.raises context manager. Here's an example:

python 复制代码
import pytest

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

def test_divide_by_zero():
    with pytest.raises(ZeroDivisionError) as exc_info:
        divide(10, 0)
    assert str(exc_info.value) == "Cannot divide by zero"

In this example, we have a function divide that performs division. If the divisor b is zero, it raises a ZeroDivisionError with a custom error message.

In the test_divide_by_zero test function, we use the pytest.raises context manager to assert that a specific exception is raised. Inside the context manager, we call the divide function with arguments that would result in a division by zero. If the expected exception is raised, the context manager captures the exception information. We can then access the exception using exc_info.value and assert its properties, such as the error message.

Note that the pytest.raises context manager will pass the test if the expected exception is raised. If the exception is not raised or a different exception is raised, the test will fail.

Make sure to replace ZeroDivisionError with the actual exception you expect to be raised, and adjust the assertion as needed for your specific case.

See https://docs.pytest.org/en/7.1.x/how-to/assert.html#assertions-about-expected-exceptions for more details.

相关推荐
sunfove5 小时前
Python 面向对象编程:从过程式思维到对象模型
linux·开发语言·python
沈浩(种子思维作者)5 小时前
什么才叫量子物理学?什么是真正量子计算?
人工智能·python·flask·量子计算
小小测试开发6 小时前
Python bool 类型常用方法与实战指南:极简类型的高效用法
python
小北方城市网6 小时前
SpringBoot 集成 RabbitMQ 实战(消息队列解耦与削峰):实现高可靠异步通信
java·spring boot·python·微服务·rabbitmq·java-rabbitmq·数据库架构
百锦再6 小时前
国产数据库现状与技术演进
数据库·python·plotly·flask·virtualenv·pygame·tornado
Piar1231sdafa6 小时前
YOLO11-Seg与Fasternet-BiFPN结合的枣果实品质检测系统实现详解
python
minglie16 小时前
micropython 按键
python
阿豪只会阿巴6 小时前
项目心得——发布者和订阅者问题解决思路
linux·开发语言·笔记·python·ubuntu·ros2
chilavert3186 小时前
技术演进中的开发沉思-317 JVM:指令集(下)
开发语言·python
tjjucheng7 小时前
小程序定制开发公司排名
python