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

Python Mock测试报错:找不到dummy_path.csv模块,求解决

问题原因分析

出现No Module found named dummy_path.csv错误,核心原因是你mock的read_df路径不正确,导致mock未生效,实际的read_df函数被执行,而该函数内部可能存在错误逻辑(比如误将文件名当作模块导入),或者尝试读取文件时触发了类似模块导入的异常。

解决方案

1. 修正Mock的目标路径

Python的unittest.mock.patch是基于模块命名空间工作的,你需要patch被测试函数filter_df实际引用的read_df,而非read_df的原始定义模块。

比如,假设filter_df所在的模块pr是这样导入read_df的:

from plugins.qa_plugins.preprocessing import read_df

那你需要将patch的目标改为pr.read_df,而非plugins.qa_plugins.preprocessing.read_df:

@patch('pr.read_df')  # pr是filter_df所在的模块名
def test_filter_df(self, read_df_mock):
    # 后续测试逻辑保持不变

2. 排查read_df的实际实现

如果修正patch路径后仍报错,说明实际的read_df函数内部存在错误,比如误将传入的文件名当作模块执行import操作。检查read_df的代码,确保它是通过pandas的read_csv等方法读取文件,而非进行模块导入。

3. 处理装饰器的影响

由于read_df被save_output_to_file装饰,若装饰器在原始模块中应用,需确保mock覆盖的是装饰后的函数。如果需要mock装饰器本身,可添加额外的patch:

@patch('plugins.qa_plugins.preprocessing.save_output_to_file')
@patch('pr.read_df')
def test_filter_df(self, read_df_mock, save_output_to_file_mock):
    # 让装饰器返回原函数,避免干扰mock
    save_output_to_file_mock.return_value = lambda func: func
    # 后续测试逻辑...

清理无效代码

你测试代码中创建的save_output_to_file_mock未实际替换目标装饰器,属于无效代码,可直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:43