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

如何在Python测试中访问patch寄存器以查看活跃补丁?

排查Python测试中残留补丁的方法

要查看当前活跃的补丁,直接利用unittest.mock的内部跟踪机制即可,以下是具体方案:

  • 查看当前活跃补丁列表
    unittest.mock模块维护了一个全局的_active_patchers列表,所有已激活但未清理的补丁都会存在这里。你可以在测试的关键位置(比如断言失败前)添加代码打印这个列表:

    import unittest.mock as mock
    
    # 在需要排查的位置插入
    print("当前活跃的补丁:")
    for patcher in mock._active_patchers:
        print(f"补丁目标:{patcher.target}")
        print(f"原始对象:{patcher.original}\n")
    

    这个列表里的每个元素都是patch对象,通过target属性能看到被补丁的模块/对象路径,original则是被替换前的原始对象。

  • 验证残留补丁是否是问题根源
    如果怀疑是其他测试的残留补丁导致失败,可以在你的测试用例开始前强制停止所有活跃补丁:

    import unittest.mock as mock
    
    def test_my_feature():
        # 先清理所有残留补丁
        mock.patch.stopall()
        
        # 后续原测试代码
        with patch("my.module") as mocked_method:
            [...]
            mocked_method.assert_called()
    

    如果这样修改后测试能在套件中通过,就说明确实存在未正确清理的补丁。

  • 检查测试用例的补丁使用规范
    确保所有测试都正确使用patch的自动清理机制:

    • 优先用with语句包裹补丁代码,退出语句块时自动清理
    • 用@patch装饰器修饰测试函数,测试前后框架会自动启停补丁
    • 避免手动调用patcher.start()后忘记调用patcher.stop()

内容的提问来源于stack exchange,提问作者David Jiménez Martínez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:06:16