Robot Framework如何实现单测试套件通过即标记最终结果为PASS?
实现方案
完全可以实现该需求,不需要修改现有测试用例,推荐使用rebot内置参数即可快速达成目标:
方案1:使用rebot内置--rerunfailedsuccess参数(无需额外代码,优先推荐)
该参数的原生逻辑就是合并多次测试结果时,只要任意一次运行中测试用例执行通过,最终结果就标记为通过,完全匹配你的或逻辑判定要求,操作步骤如下:
- 执行两次测试时分别保存独立输出文件,避免结果互相覆盖:
# 执行服务器A的健康检查,结果保存为output_serverA.xml robot --variable Server_credentials:<ServerA details> --output output_serverA.xml Health_Check_Server.robot # 执行服务器B的健康检查,结果保存为output_serverB.xml robot --variable Server_credentials:<ServerB details> --output output_serverB.xml Health_Check_Server.robot
- 用rebot合并结果,添加
--rerunfailedsuccess参数即可:
rebot --rerunfailedsuccess --output final_output.xml --log final_log.html --report final_report.html output_serverA.xml output_serverB.xml
最终生成的报告/日志会完整保留两台服务器的执行细节,且只要任意一次测试通过,最终结果就标记为PASS,仅当两次测试全失败时才标记为FAIL。
方案2:自定义结果判定逻辑(适用于旧版本RF或者更复杂的规则)
如果你使用的Robot Framework版本较低没有--rerunfailedsuccess参数,也可以通过RF官方提供的ExecutionResult API自己实现判定逻辑,示例代码如下:
from robot.api import ExecutionResult # 读取两次运行的结果文件 res_a = ExecutionResult("output_serverA.xml") res_b = ExecutionResult("output_serverB.xml") # 自定义或逻辑判定 if res_a.statistics.total.passed > 0 or res_b.statistics.total.passed > 0: print("健康检查最终结果:PASS") exit(0) else: print("健康检查最终结果:FAIL") exit(1)
内容的提问来源于stack exchange,提问作者Patz
相关产品推荐
相关产品推荐

