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

Robot Framework重跑失败用例后,合并报告仅显示通过用例问题求助

解决Robot Framework重跑失败用例后报告不完整的问题

问题根源

你当前脚本使用的||是逻辑或运算符,只有前序命令执行失败(返回非0状态码)时,才会触发后续命令。这就导致:

  • 若首次测试有失败,执行重跑后如果重跑全部通过(重跑命令返回0),后续的rebot合并步骤会被跳过,最终报告只会显示重跑的用例;
  • 只有当重跑也失败时,才会执行合并,报告才能正常包含所有用例。

解决方案

调整脚本逻辑,确保无论重跑是否成功,都执行结果合并步骤。以下是两种可行的实现方式:

方式一:简洁版(推荐)

使用--runemptysuite参数,保证即使没有失败用例可重跑,也能生成有效的rerun.xml,随后直接合并两个结果文件:

# 1. 执行首次测试
python -m robot --outputdir tmp TestCases/Regression.robot

# 2. 重跑失败用例,--runemptysuite确保无失败用例时也生成有效xml
python -m robot --outputdir tmp --rerunfailed tmp/output.xml --output rerun.xml --runemptysuite TestCases/Regression.robot

# 3. 合并首次结果与重跑结果,生成最终报告
rebot --outputdir tmp --output output.xml --merge tmp/output.xml tmp/rerun.xml

方式二:条件判断版

通过shell条件判断,仅在有失败用例时执行重跑,再根据是否存在重跑结果决定合并逻辑:

# 1. 执行首次测试
python -m robot --outputdir tmp TestCases/Regression.robot

# 2. 检查首次测试是否有失败用例,有则执行重跑
if [ -f tmp/output.xml ]; then
    # 统计失败用例数量
    failed_count=$(grep -c '<status status="FAIL"' tmp/output.xml)
    if [ $failed_count -gt 0 ]; then
        python -m robot --outputdir tmp --rerunfailed tmp/output.xml --output rerun.xml TestCases/Regression.robot
    fi
fi

# 3. 合并结果或直接生成报告
if [ -f tmp/rerun.xml ]; then
    rebot --outputdir tmp --output output.xml --merge tmp/output.xml tmp/rerun.xml
else
    rebot --outputdir tmp tmp/output.xml
fi

效果说明

两种方式最终都会生成包含所有测试用例的报告:

  • 首次通过的用例保持通过状态;
  • 首次失败但重跑通过的用例,状态更新为通过;
  • 首次失败且重跑仍失败的用例,状态显示为失败。

内容的提问来源于stack exchange,提问作者austin.black

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:25:26