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

如何在Pytest中Mock非类成员的独立函数?

Pytest Mock独立函数不生效?看这里

问题出在你patch的路径不对。你现在patch的是target.dep.some_dep,但MyClass所在的target.myclass模块已经把some_dep的引用导入到自己的命名空间里了——Python里from ... import ...是直接复制函数对象的引用,原模块的函数被替换后,已导入的引用不会跟着变,所以你的Mock根本没作用到MyClass.do()调用的那个some_dep上。

直接改测试代码里的patch路径就行,改成patchtarget.myclass里的some_dep:

import mock
from target.myclass import MyClass

@mock.patch("target.myclass.some_dep", return_value="PATCHED", autospec=True)
def test_do(mock_some_dep):
    m = MyClass()
    assert m.do() == "thing done PATCHED"

简单说就是:Mock要盯着被测试代码实际用的那个引用位置,而不是原函数所在的模块。因为MyClass用的是自己模块里导入的some_dep,不是原模块的,所以得patch这个导入后的位置。

内容的提问来源于stack exchange,提问作者engineer-x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:04