稳定UI运行结果-自动化测试失败重试和截图

摘要:
针对这种情况,我们可以基于TestNG的重试器和监听器实现失败结果的重试和监听处理,一旦监听到失败的测试用例,启动自己定制的重试方法和处理方法来实现重新运行和截图。ITestListener实现失败截图TestNG提供了ITestListener接口,通过扩展和实现此接口,能够实现自定义成功/失败的处理方式。

运行自动化测试的时候,有时会因为网络不稳定,测试环境或者第三方环境正在重启而造成用例运行结果不稳定,时而能跑过时而跑不过。这些难以重现的环境因素造成的用例失败会让测试人员很困扰,排查即耗费时间也没有太多改善的空间。针对这种情况,我们可以基于TestNG的重试器和监听器实现失败结果的重试和监听处理,一旦监听到失败的测试用例,启动自己定制的重试方法和处理方法来实现重新运行和截图。

IRetryAnalyzer实现失败重试

TestNG提供了IRetryAnalyzer接口,通过实现这个接口用户可以自定义重试方法,此接口仅定义了一个retry方

稳定UI运行结果-自动化测试失败重试和截图第1张

测试人员实现IRetryAnalyzer接口,根据ITestResuly的状态决定是否继续尝试直到自定义的最大重试次数

稳定UI运行结果-自动化测试失败重试和截图第2张

TestNG会自动在添加了RetryAnalyzer的测试方法上监控测试方法的结果,并调用IRetryAnalyzer实现对不同结果的处理。本文中自定义的重试方法会判断每个测试方法的运行结果,如果测试成功,不做任何动作退出方法;如果测试失败且执行次数少于最大尝试次数,则进入重试并讲运行次数加一;如果测试失败,并尝试次数大于最大尝试次数,退出方法,并把方法标记为失败。

稳定UI运行结果-自动化测试失败重试和截图第3张

ITestListener实现失败截图

TestNG提供了ITestListener接口,通过扩展和实现此接口,能够实现自定义成功/失败的处理方式。ITestListener接口主要定义了如下方法:

• onTestStart

• onTestSuccess

• onTestFailure

• onTestSkipped

• onTestFailedButWithinSuccessPercentage

• onStart

• onFinish

上述方法主要定义测试类在构造前/运行后,以及测试类中每一个@Test注解方法创建前,获取运行结果后(运行成功/运行失败/跳过运行/部分成功)应该触发的动作。自定义实现ITestListener接口以后,就可以实现针对测试方法的自定义处理。

稳定UI运行结果-自动化测试失败重试和截图第4张

实现了自定义的监听器以后,就可以在需要失败重试的方法前加上相应的注解,通过注解的value属性指明处理的监听器。添加了监听器的方法在运行时会调用监听器里面实现的方法,否则不做任何处理

稳定UI运行结果-自动化测试失败重试和截图第5张

要实现失败自动截图,就需要在监听器的onTestFailure方法里添加截图的处理,Selenium支持把WebDriver转化成为截屏工具,并且保存截屏图片到硬盘上,通过如下语句可以实现截屏处理,把方法封装到监听器的onTestFailure即可。

稳定UI运行结果-自动化测试失败重试和截图第6张

作  者:Testfan Kitty
出  处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

免责声明:文章转载自《稳定UI运行结果-自动化测试失败重试和截图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unreal开发HTC Vive程序,开启VR编辑模式Hadoop组件之-HDFS(HA实现细节)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在Eclipse中安装testNG插件

1、 选择菜单:Help->Install New Software,点击Add按钮输入框中输入相应的Name:testNG和Location:http://beust.com/eclipse。2、选中TestNG后一路点击Next下去安装即可,直到Finished之后,重启Eclipse完成安装。 3、在项目中使用testNG时参照JUint...

EditText的监听器和自定义回车事件

我们一般是监听EditText的状态,看EditText中是不是有文字,根据有无进行不同的操作。 //给editText添加监听器 editText.addTextChangedListener(newTextWatcher() { @Override public void onTex...

阿里云PTS分享-用性能测试工具JMeter实现基于供应链业务上对于WebSocket 协议的压测

性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,孵化自阿里内部平台。有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化的设计,更适合当前的主流技术架构。无论是自研还是适配开源的功能,PTS都可以轻松模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本。更是紧密结合监控...

Oracle 数据库监听配置

一、监听器(LISTENER)   监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。   二、本地服务名(Tnsname)   Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器...

Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)

  最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了。   问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行加载(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)。我个人首先想到的是在tomcat中加监听...

testng 接口测试,读取Excel表格数据,做数据驱动2(读取某些固定列数据)

testng public classTestRegister { @Test(dataProvider="datas") public voidtest1(String,url,String username,String pwd){ Map<String, String> params = ne...