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

使用pytest mock time.time()时遭遇ModuleNotFoundError问题求助

解决ModuleNotFoundError及Mock路径错误问题

1. 修复导入路径报错

报错ModuleNotFoundError: No module named core.p_core.common.CommonBase的核心原因是Python无法找到core包的搜索路径,按以下方式解决:

  • 运行pytest时,确保在包含core文件夹的项目根目录下执行命令
  • 如果测试文件放在子目录(比如tests文件夹),在测试文件开头添加路径配置:
    import sys
    from pathlib import Path
    # 根据实际目录层级调整,将项目根目录加入Python搜索路径
    sys.path.append(str(Path(__file__).parent.parent))
    

2. 修正Mock路径

你当前的Mock路径core.p_core.common.CommonBase.time.time完全错误,因为time是标准库模块,并非CommonBase类的属性。需根据time的实际导入位置调整:

情况A:time在common.py全局导入(文件开头写import time)

修正后的测试代码:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))

from core.p_core.common import CommonBase

def test_get_timestamp(mocker):
    # Mock common.py中导入的time.time方法
    mocker.patch("core.p_core.common.time.time", return_value=1680087494.2400253)
    assert CommonBase.get_timestamp('TEST') == "TEST-1680087494.2400253"

情况B:time在get_timestamp方法内导入(方法里写import time)

修正后的测试代码:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))

from core.p_core.common import CommonBase

def test_get_timestamp(mocker):
    # Mock方法内导入的time.time
    mocker.patch("core.p_core.common.get_timestamp.time.time", return_value=1680087494.2400253)
    assert CommonBase.get_timestamp('TEST') == "TEST-1680087494.2400253"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:57:27