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

Python单元测试中如何正确mock被另一函数调用的内部函数?

问题排查与解决

错误原因

这一问题和uuid4无关,属于Python unittest.mock 的典型使用错误,核心问题是patch的目标路径不正确。

Python的mock遵循「在哪里使用,就mock哪里」的规则:
你在generate.py中执行了from utils import generateCode,相当于把utils模块里的generateCode函数引用复制了一份到generate模块的命名空间里。你现在patch的是utils.generateCode,只会修改utils模块自身的函数引用,不会影响generate模块已经导入完成的那份引用,因此测试时调用的还是原函数,会返回随机值。

正确修改方案

只需要把测试代码里patch的路径修改为generate.generateCode,即mockgenerate模块里实际调用的那份函数引用即可,修改后的测试代码如下:

from unittest.mock import patch
from generate import create_auth_challenge

@patch('generate.generateCode', return_value='123456')
def test_create_auth_challenge(self, mock_generateCode):
   answer = create_auth_challenge()
   self.assertEqual(answer,'123456')

修改后重新运行测试即可通过。

内容的提问来源于stack exchange,提问作者Shalahuddin Al-Ayyubbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:00