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

本地pytest可正常收集并通过测试,GitHub Actions中收集0用例(退出码5)

解决GitHub Actions中pytest收集不到测试的问题

1. 对齐本地与CI的Python环境

  • 确保GitHub Actions使用的Python版本和本地完全一致,版本差异可能引发模块识别或依赖兼容问题。
  • 检查依赖安装环节:工作流中必须完整执行依赖安装命令(比如pip install -r requirements.txt),且依赖文件要包含pytest及项目所有必需包,避免因缺失依赖导致模块无法导入,进而测试收集失败。

2. 确保包名可被Python识别

  • 你使用的--pyargs <package name>依赖Python能找到对应包,本地可能通过pip install -e .的 editable 模式让包可被识别,但CI环境默认不会自动安装你的项目包。需在测试命令前添加pip install .(或pip install -e .),确保项目包被安装到Python环境中。

3. 验证工作目录与文件路径

  • GitHub Actions默认在仓库根目录执行命令,若测试文件或项目包不在根目录,需先切换目录(比如cd src)再运行pytest。
  • 可在测试命令前添加find . -name "test_*.py",查看CI环境中是否能找到测试文件,确认文件路径和本地完全一致。

4. 排查pytest收集逻辑细节

  • 在CI中运行pytest --collect-only --pyargs <package name>,查看详细收集日志,确认pytest是否扫描了正确目录,是否存在模块导入失败等隐性报错。
  • 检查测试文件所在目录是否符合Python包规范:传统包结构需包含__init__.py,命名空间包则需遵循对应规则,确保pytest能识别为可导入的模块。

5. 排除.gitignore与缓存干扰

  • 确认.gitignore没有误排除测试文件或项目模块,导致CI拉取代码时遗漏文件。
  • 若启用了GitHub Actions的pip缓存,可暂时禁用缓存后重新运行工作流,排查是否因缓存旧环境导致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:59:58