RF --rerunfailed 功能是非常实用的,利用它可以在大量case第一次跑过后,从中筛选出失败的案例重新执行;结合rebot的 --merge 功能,可以重新输出output.xml,在Jenkins上展示出最后的测试结果,从而减轻自动化测试维护人员排查问题的工作量。
特别是在交易系统的服务端自动化测试中,极度依赖柜台系统和撮合工具,也会受网络延迟影响,难免在某一个时间环境各种不稳定,那么利用失败案例重跑机制能有效验证功能是否有效,一定几率的排除环境干扰。
pybot
-R --rerunfailed output Select failed tests from an earlier output file to be re-executed. Equivalent to selecting same tests individually using --test option.
rebot
-R --merge When combining results, merge outputs together instead of putting them under a new top level suite. Example: rebot --merge orig.xml rerun.xml
与Jenkins结合使用
Execute Windows batch command
1 2 3 |
|
2个关键点
这个内容看似简单,其实有一个大坑,需要注意到我们在batch脚本中调用 pybot 或者 rebot的方式,是采用 call 的方式!如果直接采用 pybot 方式执行案例,那么pybot退出后,整个batch的进程就结束了,后续所有命令就不执行了。
另外还有一点要注意的是,在第一个调用pybot的时候不能用参数 --nostatusrc,该参数会在命令行执行完成后强制把errorlevel的值会置为0,那么后续就无法根据errorlevel来进行判断是否重新执行失败案例。如果不利用errorlevel来做判断条件,而是无条件直接执行 --rerunfailed 当第一次执行全部成功后,此命令行会直接抛错,导致整个任务以失败结束。
前后两次案例执行结果分析对照
通过log日志,可以看到对于第一次失败的案例,有2条message显示,也能看到为什么第一次失败,具体失败在哪个断言。