GitHub CI运行单元测试报文件不存在错误但本地Windows环境运行正常
问题根因
你遇到的报错核心是相对路径的执行基准目录不匹配,其次存在几个可优化的配置问题:
- 路径基准差异:你本地执行单元测试时的工作目录,和GitHub Actions执行step时的默认工作目录(仓库根目录)不一致。你代码中读取
reference/buildingblocks2_10.yaml用的是相对路径,相对路径的基准是执行命令时的工作目录,不是当前Python文件的存放目录,所以CI环境下找不到对应文件。 - 隐性配置冲突:Windows本地文件系统默认大小写不敏感,即使文件名/目录名大小写和代码里写的不一致也能正常读取,但Git默认大小写敏感,如果仓库里存储的文件名和代码里写的大小写不一致,CI环境就会触发找不到文件的报错。
- 工作流配置不规范:Python环境配置步骤的名称标注为
Set up Python 3.8,但实际指定的版本是3.9,虽不影响本次报错,但存在配置歧义。
解决方案
- 优先修改代码路径逻辑(最稳妥,适配所有执行环境):
修改settings.py中读取文件的代码,基于当前文件的绝对路径拼接目标文件路径,示例代码:
import os # 获取当前settings.py文件所在的目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接yaml文件的绝对路径 yaml_path = os.path.join(current_dir, "reference", "buildingblocks2_10.yaml") with open(yaml_path) as fp: # 原有读取逻辑
- 如果不想修改代码,可以直接调整工作流的执行命令,和本地执行的工作目录保持一致:
把Test with pytest步骤的run命令修改为:
cd linux64/unittest python -m unittest discover
- 排查大小写问题:可以在测试步骤前增加一个调试步骤,打印CI环境的文件结构确认文件是否存在:
- name: Check file structure run: dir /s /b
内容的提问来源于stack exchange,提问作者Jerry Yu
相关产品推荐
相关产品推荐

