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

Python中无法正确Mock依赖模块方法,测试未按预期失败

问题原因与修复方案

核心问题:Mock路径错误

你当前Mock的是util.rename,但main.py通过from util import rename已经把rename函数导入到了main模块自身的命名空间中,use_rename实际调用的是main模块里的rename引用,而非原始的util.rename。这导致你的Mock根本没作用到被测试的代码上,use_rename还是执行原始函数返回"name",断言自然会成功。

修复代码

把Mock的目标改成main.rename即可,修改后的test_main.py如下:

import sys
import os
from unittest.mock import patch

sys.path.append(os.path.join(os.path.dirname(__file__), ".."))

from main import use_rename

@patch("main.rename")  # 替换为main模块内的rename引用
def test_use_rename(mock_rename):
    mock_rename.return_value = "name2"
    assert use_rename() == "name"  # 现在这个断言会失败,符合预期

补充说明

Python中使用from xxx import y时,会将y复制一份到当前模块的命名空间,后续代码调用的都是这个副本。要让Mock生效,必须针对被测试代码实际调用的那个引用所在的位置进行patch,而非原始函数的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:22:05