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

使用pytest-mock patch PIL.Image.save报模块无save属性错误如何解决

报错原因

save 并不是 PIL.Image 模块的顶层属性,而是模块内部 Image 类的实例方法,因此你直接尝试 patch 模块下的 save 属性时,自然会触发属性不存在的报错。你在 Image.py 源码中看到的 save 方法是定义在类内部的,没有直接挂载到模块层级,所以不能作为模块属性被 patch。

解决方法

通用方案:mock所有Image实例的save方法

直接修改 patch 目标路径为类方法的对应路径即可:

def test_image(mocker):
    # 正确路径为 PIL.Image.Image.save
    mock_save = mocker.patch("PIL.Image.Image.save")
    # 后续测试逻辑
    # 示例:验证save方法调用参数
    # mock_save.assert_called_once_with("output.png")

特殊场景:业务代码单独导入了save方法

如果你的业务代码使用了 from PIL.Image import save 的方式单独导入了 save 方法,按照 mock 要指向对象实际被使用的位置 原则,你需要 patch 业务代码模块内导入的 save 引用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:15:04