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

运行Unittest测试出现模块导入错误,需兼容AWS Lambda导入结构如何处理

问题原因

你遇到的导入报错核心是运行单元测试时,Python的模块搜索路径未包含src目录:main.py中直接导入library的写法是符合AWS Lambda部署要求的(Lambda运行时会把代码根目录加到搜索路径),但本地跑测试时默认是从项目根目录启动,Python找不到src下的library.py模块。

不需要修改业务代码的导入语句,以下几种方案都可以适配当前结构:

解决方案

方案1:临时指定PYTHONPATH运行测试(无需修改任何代码)

直接在测试命令前添加环境变量,把src目录加入搜索路径即可:

PYTHONPATH=./src python3 -m unittest discover test

如果是Windows系统,PowerShell下先执行$env:PYTHONPATH="./src"再运行测试命令即可。

方案2:测试文件开头手动添加搜索路径

如果不想每次运行都加环境变量,可以在test_main.py的最开头新增两行代码:

import sys
sys.path.append("./src")

这两行代码仅作用于测试执行逻辑,不会影响业务代码,部署AWS Lambda时测试文件不会被打包,完全不会破坏你现有的导入结构。

方案3:新增unittest配置文件(持久化配置)

在项目根目录新建setup.cfg文件,写入以下配置:

[unittest]
start-dir = test
pythonpath = src

配置完成后直接运行python3 -m unittest即可自动识别测试,不需要额外加参数。


另外注意你当前测试用例存在断言不匹配的小问题:library.py中hello()返回的是Hello World,但测试断言写的是Hello World!(多了一个感叹号),导入问题解决后需要修正这个断言才能通过测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:45:02