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

使用pytest运行测试报ModuleNotFoundError找不到string_helper模块

pytest运行提示ModuleNotFoundError: No module named 'string_helper'解决方法

报错根因

报错是Python模块搜索路径不匹配导致的:从项目根目录执行pytest命令时,Python默认将项目根目录加入模块搜索路径,string_helper.py实际存放在src目录下,而src/main.py中直接写from string_helper import string_sum时,Python会优先在根目录查找对应模块,不会自动检索src子目录,因此触发找不到模块的错误。
另外原有代码还存在两个会阻断测试运行的小问题:

  • src目录未被明确标记为Python包,部分环境下会出现导入识别异常
  • main()函数未定义入参,测试用例中调用main(1,2)会触发参数数量不匹配报错

推荐修复方案(符合Python包开发规范)

按以下步骤调整即可:

  1. 在src目录下新建空文件__init__.py,用于标记src为可导入的Python包
  2. 修改src/main.py的导入语句,将同目录模块的导入改为包内相对导入,同时给main函数加上默认参数适配测试调用,修正后完整代码如下:
# src/main.py
from .string_helper import string_sum

def main(a=2, b=1):
  r = string_sum(a, b)
  return r

if __name__ == "__main__":
  r = main()
  print(r)
  1. 无需修改src/string_helper.py和测试文件内容,回到项目根目录重新执行pytest -v即可正常运行所有测试用例。

轻量替代方案(无需修改现有导入语句)

如果不想调整原有导入写法,可以在项目根目录新建pytest.ini配置文件,让pytest执行时自动将src目录加入模块搜索路径,配置内容如下:

[pytest]
pythonpath = src

注意使用该方案时,依然需要给main()函数添加对应入参,否则测试调用时会抛出参数错误。


内容的提问来源于stack exchange,提问作者Gabriel Muñumel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:48:15