在Robot Framework中,针对上一次执行的报告(output.xml)重新执行失败用例,最标准且高效的方法是使用内置的 --rerunfailed (或简写 -R)命令行参数。该参数会从指定的输出文件中解析出失败的测试用例列表,并仅执行这些用例。
核心操作步骤
1. 第一次执行(全量执行)
robot --output first_run.xml tests/
生成初始报告 first_run.xml。
2. 第二次执行(仅执行失败用例)
robot --rerunfailed first_run.xml --output rerun.xml tests/
RF会读取 first_run.xml,筛选出状态为 FAIL的用例进行执行,结果输出到 rerun.xml。
3. 合并报告(可选,推荐)
rebot --merge first_run.xml rerun.xml
将两次执行结果合并为一个最终的 output.xml。在合并报告中,如果用例在重跑中通过,则最终状态显示为 PASS,但日志中会保留第一次失败的记录,便于追溯。
关键参数说明
| 参数 | 全称 | 作用 | 备注 |
|---|---|---|---|
-R |
--rerunfailed |
指定上一次的 output.xml文件路径 |
如果该文件中没有失败用例,执行会报错 |
-o |
--output |
指定本次执行的输出XML文件名 | 重跑时必须指定与第一次不同的文件名,否则会覆盖原文件 |
--merge |
--merge |
合并多个结果文件 | 由 rebot命令使用,非 robot命令 |
注意事项
-
路径一致性 :重跑命令中的测试路径(
tests/)必须与第一次执行时完全一致,否则RF无法定位到对应的测试文件。 -
前置条件依赖 :如果失败用例依赖于其他用例的
Suite Setup或前置测试步骤,建议使用--rerunfailedsuites(-S)参数重跑整个失败的测试套件,以确保环境正确初始化。 -
错误处理 :如果第一次执行全部通过(
first_run.xml中无失败用例),直接使用-R会抛出DataError。在脚本化执行时,建议先判断first_run.xml中是否存在失败用例,再决定是否执行重跑命令。
示例脚本(Shell/Bash)
#!/bin/bash
# 第一次执行
robot --output first_run.xml tests/
# 检查退出码,非0表示有失败用例
if [ $? -ne 0 ]; then
echo "有用例失败,开始重跑..."
robot --rerunfailed first_run.xml --output rerun.xml tests/
# 合并报告
rebot --merge first_run.xml rerun.xml
else
echo "全部用例通过,无需重跑"
# 重命名或移动报告
mv first_run.xml output.xml
fi
通过以上方式,可以有效过滤环境抖动等偶发性失败,提升自动化测试的稳定性。