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

使用Pytest与GitLab CI时相对路径问题解决咨询

解决方案

核心问题:文件路径依赖工作目录

你遇到的问题本质是测试代码里用了相对于当前工作目录的路径,但PyCharm、终端、GitLab CI的默认工作目录不一致:

  • PyCharm默认将测试文件所在的src/logic设为工作目录,所以路径有效
  • 终端/CI默认以项目根目录(App)为工作目录,导致TestFiles/TestFile.json找不到

彻底解决:修改代码使用绝对路径

修改test_logic.py,基于测试文件自身的目录拼接测试文件路径,彻底摆脱工作目录限制:

import os

# 获取当前测试文件的绝对目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接测试文件的完整路径
test_file_path = os.path.join(current_dir, "TestFiles", "TestFile.json")

# 使用绝对路径调用函数
assert logic.load_file(test_file_path) is True

如果logic.py中的load_file函数也依赖相对路径,建议同步改成接收绝对路径,或者在函数内部将传入路径转为绝对路径。


回答你的两个问题

a) 指定pytest仅在特定目录运行

Windows下不要用pytest /src/logic(该路径指向系统根目录,不是项目内的src),从项目根目录(App文件夹)运行时,正确命令是:

# 正斜杠(多数终端支持)
pytest src/logic
# 或Windows原生反斜杠
pytest src\logic

这个命令会让pytest只扫描src/logic目录下的测试用例。

b) GitLab CI中切换目录运行pytest

在.gitlab-ci.yml中添加cd命令切换到目标目录后执行pytest:

stages:
  - test

run-tests:
  stage: test
  script:
    # Linux/macOS runner用这个
    - cd src/logic
    # 如果是Windows runner,换成下面的命令
    # - cd src\logic
    - pytest

替代方案:指定pytest工作目录

如果暂时不想修改代码,可通过--cwd参数(pytest 7.0+支持)指定工作目录为src/logic,从项目根目录运行:

pytest --cwd=src/logic

这种方式无需切换目录,直接让pytest以src/logic为工作目录执行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:10