稳定UI运行结果-自动化测试失败重试和截图
运行自动化测试的时候,有时会因为网络不稳定,测试环境或者第三方环境正在重启而造成用例运行结果不稳定,时而能跑过时而跑不过。这些难以重现的环境因素造成的用例失败会让测试人员很困扰,排查即耗费时间也没有太多改善的空间。针对这种情况,我们可以基于TestNG的重试器和监听器实现失败结果的重试和监听处理,一旦监听到失败的测试用例,启动自己定制的重试方法和处理方法来实现重新运行和截图。
IRetryAnalyzer实现失败重试
TestNG提供了IRetryAnalyzer接口,通过实现这个接口用户可以自定义重试方法,此接口仅定义了一个retry方法
测试人员实现IRetryAnalyzer接口,根据ITestResuly的状态决定是否继续尝试直到自定义的最大重试次数
TestNG会自动在添加了RetryAnalyzer的测试方法上监控测试方法的结果,并调用IRetryAnalyzer实现对不同结果的处理。本文中自定义的重试方法会判断每个测试方法的运行结果,如果测试成功,不做任何动作退出方法;如果测试失败且执行次数少于最大尝试次数,则进入重试并讲运行次数加一;如果测试失败,并尝试次数大于最大尝试次数,退出方法,并把方法标记为失败。
ITestListener实现失败截图
TestNG提供了ITestListener接口,通过扩展和实现此接口,能够实现自定义成功/失败的处理方式。ITestListener接口主要定义了如下方法:
• onTestStart
• onTestSuccess
• onTestFailure
• onTestSkipped
• onTestFailedButWithinSuccessPercentage
• onStart
• onFinish
上述方法主要定义测试类在构造前/运行后,以及测试类中每一个@Test注解方法创建前,获取运行结果后(运行成功/运行失败/跳过运行/部分成功)应该触发的动作。自定义实现ITestListener接口以后,就可以实现针对测试方法的自定义处理。
实现了自定义的监听器以后,就可以在需要失败重试的方法前加上相应的注解,通过注解的value属性指明处理的监听器。添加了监听器的方法在运行时会调用监听器里面实现的方法,否则不做任何处理
要实现失败自动截图,就需要在监听器的onTestFailure方法里添加截图的处理,Selenium支持把WebDriver转化成为截屏工具,并且保存截屏图片到硬盘上,通过如下语句可以实现截屏处理,把方法封装到监听器的onTestFailure即可。
作 者:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)