You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pytest.raises()表达式的__enter__()和__exit__()方法实现位置在哪?

pytest.raises上下文管理器方法查找路径

pytest.raises 调用后会返回一个异常捕获上下文管理器实例,你要找的__enter__和__exit__方法就定义在这个实例对应的类中,具体查找规则如下:

  • 主流新版本(pytest 4.0及以上):对应类为_pytest.python_api.RaisesContext,你可以在本地pytest安装目录下的_pytest/python_api.py文件中找到完整定义:
    • __enter__方法逻辑非常简单,仅做初始化标记,返回自身实例供as关键字后的变量绑定,也就是你示例代码里的error变量
    • __exit__是核心逻辑实现点,会判断with代码块内是否抛出了指定类型的异常:如果符合预期就捕获异常并将信息写入实例属性供后续调用;如果未抛出异常或者抛出的异常类型不匹配,就直接触发测试失败断言
  • 老旧版本(pytest 3.x及更早):对应类为pytest.raises.RaisesContext,对应实现文件为安装路径下的pytest/raises.py

你也可以直接运行以下代码快速确认你本地环境中该类的具体位置:

import pytest
context = pytest.raises(ZeroDivisionError)
print(type(context))
print(context.__module__)

输出结果里的模块路径就是你要找的文件位置,直接打开即可查看两个方法的源码。

内容的提问来源于stack exchange,提问作者user2300369

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:09:01