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
相关产品推荐
相关产品推荐

