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

Docker中Python单元测试执行失败问题排查

Docker run执行Python单元测试找不到模块的原因分析

核心原因:工作目录与Python模块搜索路径不匹配

你遇到的问题本质是Docker容器执行命令时的工作目录和你手动进入容器后的工作目录不一致,导致Python无法找到测试模块:

  • 你的Dockerfile只把lambda目录复制到了/app,但没有设置WORKDIR /app,所以docker run默认的工作目录是容器根目录/。直接执行python -m unittest *_test.py时,Python会在/目录下查找测试文件,自然找不到存放在/app里的*_test.py。
  • 当你手动进入容器后,大概率会切换到/app目录执行命令,此时Python会把当前目录(/app)加入模块搜索路径sys.path,所以能正常找到并运行测试用例。

为什么改用discover命令可以正常执行?

unittest discover本身是用来自动搜索测试文件的命令,你能成功执行的原因大概率是这两种情况之一:

  1. 你在discover命令里指定了测试文件所在的目录,比如python -m unittest discover -s /app,直接告诉命令去/app下找测试文件;
  2. 你在docker run时通过-w /app参数指定了工作目录,此时discover默认在当前工作目录(/app)下递归搜索测试文件,自然能找到。

验证与解决方法

如果想让原来的python -m unittest *_test.py命令直接生效,只需在docker run时指定工作目录:

docker run -w /app <你的镜像名> python -m unittest *_test.py

或者在Dockerfile里添加一行:

WORKDIR /app

这样后续docker run执行命令时,默认工作目录就是/app,无需额外参数就能找到测试模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:32:17