Python单元测试报错ModuleNotFoundError: No module named 'logger_util'
解决PyCharm单元测试中的ModuleNotFoundError(找不到logger_util模块)
问题根源在于Python的模块搜索路径差异:运行主业务代码时,PyCharm默认把src/main加入了搜索路径,所以data_normalizer.py里直接import logger_util能找到同目录模块;但跑单元测试时,启动目录可能是project_folder或src/test,src/main不在搜索路径里,就会报错。
给你几个可行的解决办法:
修改业务代码为相对导入
把data_normalizer.py里的import logger_util改成:from . import logger_util你的目录已经有
__init__.py,属于标准包结构,相对导入能保证不管从哪个目录启动,都能正确找到同包内的模块。给PyCharm设置源根
- 右键点
src/main目录,选Mark Directory as -> Sources Root - 再把
src/test目录设为Test Sources Root
这样PyCharm跑测试时会自动把src/main加入模块搜索路径,原有的导入语句就能正常工作。
- 右键点
调整测试运行的工作目录
- 点右上角运行按钮旁的下拉菜单,选Edit Configurations
- 找到你的单元测试配置,在Working directory里把路径改成
project_folder/src/main - 保存后重新跑测试,此时工作目录和主业务代码一致,就能找到
logger_util。
在测试文件里手动加路径
在测试文件最顶部加这段代码,把src/main塞进Python的搜索路径:import sys from pathlib import Path main_dir = Path(__file__).parent.parent / "main" sys.path.append(str(main_dir.resolve()))这种方法不用改业务代码或IDE配置,就是要确保路径写对。
内容的提问来源于stack exchange,提问作者SoT
相关产品推荐
相关产品推荐

