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

如何在Pytest用例失败时让GitLab CI任务判定为失败

问题解决方案

GitLab CI 任务默认会根据脚本中每一条命令的退出码判定任务状态,只要命令返回非0值就会自动标记任务失败,你原有配置中的|| exit $?属于冗余逻辑,未生效通常是特殊执行场景导致的退出码被吞,可按以下方案排查配置:

  • 最简标准配置
    无需额外加退出判断,直接写pytest执行命令即可生效:
script:
  - python -m pytest -rP test_basic

你可以先在本地测试验证:执行pytest故意触发测试失败,运行echo $?确认返回值为非0,正常pytest测试用例失败返回1,执行过程错误返回2,均满足GitLab CI的失败判定条件。

  • 带后续操作的配置
    如果你需要在pytest执行完成后运行其它操作(比如收集测试报告、上传日志等),需要先保存pytest的退出码,最后统一返回,避免后续命令的0退出码覆盖pytest的失败状态:
script:
  - python -m pytest -rP test_basic
  - PYTEST_EXIT_CODE=$?
  # 此处可添加任意后续执行命令,比如生成Allure报告、打包日志等
  - exit $PYTEST_EXIT_CODE
  • 带管道输出的配置
    如果你用了管道操作把pytest输出同时写入日志文件,需要先开启pipefail参数,否则shell默认会取管道最后一个命令的退出码(比如tee命令的成功状态),导致pytest的失败状态被吞:
script:
  - set -o pipefail
  - python -m pytest -rP test_basic | tee pytest_run.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:24:03