pytest运行单元测试提示No module named 'compute_launch'问题求助
报错修复方法
核心原因
Python导入模块时不支持文件名包含中划线(-),你的源代码文件命名为compute-launch.py,但测试代码中导入的是下划线命名的compute_launch,两者不匹配导致找不到模块。
推荐解决方案(操作最简单)
- 将源代码文件名从
compute-launch.py修改为compute_launch.py,和测试文件的导入语句保持命名一致 - 确认修改后的
compute_launch.py和test-compute-launch.py放在同一级文件夹下 - 在两个文件所在的文件夹路径下打开终端,直接运行
pytest即可正常执行测试
可选解决方案(无需修改源文件名)
如果你不想调整源文件命名,可以替换test-compute-launch.py开头的导入语句为以下内容,手动指定导入的文件路径:
import importlib.util import sys spec = importlib.util.spec_from_file_location("compute_launch", "./compute-launch.py") compute_launch = importlib.util.module_from_spec(spec) sys.modules[spec.name] = compute_launch spec.loader.exec_module(compute_launch) from compute_launch import days_until_launch
修改完成后同样在当前文件夹下运行pytest即可。
验证方法
修改完成后可以先在当前目录的终端执行python3 -c "import compute_launch",无报错就说明模块导入正常,再运行pytest即可。
内容的提问来源于stack exchange,提问作者parmida
相关产品推荐
相关产品推荐

