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

如何在run_test.py中捕获单元测试错误,使CI流水线失败?

解决CI中单元测试失败不终止流水线的问题

原脚本的问题在于os.system执行命令失败后不会中断脚本运行,最终run_test.py会以最后一条命令的退出码结束,导致CI误判为成功。只要捕获每个测试脚本的退出码,在失败时立即终止run_test.py即可让CI流水线识别失败。

方法1:基于os.system和sys.exit修改

直接检查os.system的返回值,一旦测试脚本返回非0退出码,就终止当前脚本:

import os
import sys

# 执行test1并检查结果
test1_exit = os.system("python test1.py")
if test1_exit != 0:
    sys.exit(test1_exit)  # 传递test1的错误码,让CI捕获

# 仅test1成功时才执行test2
test2_exit = os.system("python test2.py")
sys.exit(test2_exit)

方法2:使用更推荐的subprocess模块

subprocess比os.system更灵活,且原生支持命令失败时抛出异常:

import subprocess
import sys

# 执行test1,失败则抛出异常并退出
try:
    subprocess.run(["python", "test1.py"], check=True)
except subprocess.CalledProcessError as e:
    sys.exit(e.returncode)

# test1成功后执行test2,失败同样终止
subprocess.run(["python", "test2.py"], check=True)

关键说明

  • 单元测试脚本(test1.py、test2.py)在失败时会返回非0退出码,这是CI判断任务成功/失败的核心依据
  • 修改后的run_test.py会在任意测试失败时立即终止,并传递对应的错误码,CI流水线会因此标记为失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:10:25