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

Python单元测试中如何mock uuid4()使其返回固定值'abcd1234'

问题原因

你当前测试不生效的核心原因是没有遵循Python unittest.mock 的patch定位规则:需要mock的是被测试代码实际调用的那个引用,而不是函数定义所在的原模块引用。
你的业务代码A_script.py 用了 from uuid import uuid4 导入,相当于在A_script模块的命名空间里创建了一个独立的uuid4引用,指向原uuid.uuid4函数。你直接patch原uuid.uuid4不会影响A_script里已经导入的这个本地引用。

修改方案

只需要把测试代码里@patch的参数改为你要测试的A_script模块里的uuid4引用即可:
把@patch('uuid.uuid4') 修改为 @patch('src.A_script.uuid4')

修改后的完整测试代码
import unittest
from unittest.mock import patch
import src.A_script as a_script

class MyTestCase(unittest.TestCase):
   @patch('src.A_script.uuid4')
   def test_get_unique_identifier(self, mock_uuid4):
      mock_uuid4.return_value = 'abcd1234'
      expected = 'test_env-test_cust-abcd1234'
      unique_identifier = a_script.get_unique_identifier('test_env', 'test_cust')
      self.assertEqual(expected, unique_identifier)
补充说明

如果业务代码里导入uuid的写法是import uuid,调用的时候用uuid.uuid4(),那你原来的@patch('uuid.uuid4')写法才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:07