selenium实现失败重运行
UI自动化脚本执行过程中存在非常多的不稳定性,例如网络的不稳定,浏览器无响应等等,这些失败往往并不是产品中的错误。那么这时我们往往需要对执行失败的测试用例进行多次重跑,确认其是否确实失败。 那么失败重跑我们可以通过TestNG的功能来实现。
一旦测试方法失败,就会调用TestNG的IRetryAnalyzer接口的retry
方法。如果您想重新执行失败的测试用例,那么就让此方法返回true,如果不想重新执行测试用例,则返回false。
如下我们新建一个TestngRetry类,实现IRetryAnalyzer :
import org.testng.IRetryAnalyzer; import org.testng.ITestResult;/*** 用例失败自动重跑逻辑* @author Charlie.chen**/ public class TestNGRetry implements IRetryAnalyzer {public LogUtil log = new LogUtil(this.getClass());private int retryCount = 0;private int maxRetryCount=2;public boolean retry(ITestResult result) {if (retryCount <= maxRetryCount) {String message = "running retry for '" + result.getName() + "' on class " + this.getClass().getName() + " Retrying " + retryCount + " times";log.info(message);retryCount++;return true;}return false;} }
添加用例重跑监听器RetryListener,用例失败自动重跑功能
import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.testng.IAnnotationTransformer; import org.testng.IRetryAnalyzer; import org.testng.annotations.ITestAnnotation;/*** 添加用例重跑监听器,用例失败自动重跑功能* * @author Charlie.chen**/public class RetryListener implements IAnnotationTransformer {public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {IRetryAnalyzer retry = annotation.getRetryAnalyzer();if (retry == null) {annotation.setRetryAnalyzer(TestNGRetry.class);}} }
在testng.xml文件中配置自己编写的监听器
<listeners><listener class-name="com.dji.utils.RetryListener"/></listeners>
查看testng报告时,发现失败的用例在报告里生成了多份,改进办法
需新建一个类TestNGListener继承TestListenerAdapter,然后重写onFinish方法
@Overridepublic void onFinish(ITestContext testContext) {log.info("Test Finish");Iterator<ITestResult> listOfFailedTests = testContext.getFailedTests().getAllResults().iterator();while (listOfFailedTests.hasNext()) {ITestResult failedTest = listOfFailedTests.next();ITestNGMethod method = failedTest.getMethod();if (testContext.getFailedTests().getResults(method).size() > 1) {listOfFailedTests.remove();} else {if (testContext.getPassedTests().getResults(method).size() > 0) {listOfFailedTests.remove();}}}}
转载于:https://www.cnblogs.com/fulucky/p/7986808.html
selenium实现失败重运行相关推荐
- python pip安装指定版本unittest_你们想要的unittest用例失败重运行,解决方案来啦!...
前言 很多小伙伴一直在诟病 unittest,说 unittest 相对 pytest 来说太鸡肋了,pytest 中提供了很多高级功能 unittest 中都没有. 在这里还是想为 unittest ...
- python3 unittest框架失败重跑加截图支持python2,python3
github源码地址下载:https://github.com/GoverSky/HTMLTestRunner_cn.git 解压文件后取出/HTMLTestRunner_cn.py文件丢进C:\Py ...
- Pytest之重运行及生成测试报告
VOL 156 09 2020-09 今天距2021年113天 这是ITester软件测试小栈第156次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- python selenium安装失败_python:学习selenium遇到的坑
最近在学习python,在使用selenium做自动化时候遇上各种坑,有很多是自己不小心弄出来的,下面记录下自己学习中遇上的坑: 用pip安装selenium时候一直报错,提示没有权限,即使我用了su ...
- 安装ISA2004后,加入域时提示:远程过程调用失败且未运行的解决办法
简单的说就是在工作组的环境下,在windows 2003 server w/sp1上安装ISA2004后,把此服务器加入域时提示"远程过程调用失败且未运行"的错误信息.解决方法:先 ...
- Pycharm:解决点击重运行(Rerun)没有反应
Pycharm:解决点击重运行(Rerun)没有反应 1.软件环境 2.问题描述 3.解决方法 ⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:
- selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python23)
优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 ...
- python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制
一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...
- selenium python实例录制运行_WEB自动化测试工具selenium录制器使用笔记
简介 selenium录制器是最近刚流行起来的一个WEB自动化测试工具,由多测测团队开发. Selenium录制器采用关键字驱动的理念,简化测试用例的创建和维护,可以直接运行在浏览器中,就像真正的用户 ...
- Selenium IDE安装与运行
Selenium IDE 是什么? Selenium IDE:是一个Firefox插件,用于记录和播放用户与浏览器的交互. (录制Web操作脚本) 为什么要学习Selenium IDE? 1. 使用S ...
最新文章
- 关于ASP.NET Web 部件连接的引入
- 项目式教学:为学生创造沉浸式学习体验
- JavaScript中数组的增删改查以及应用方式
- java union方法参数_Java Geometry.union方法代碼示例
- python增量爬虫_python爬虫Scrapy框架之增量式爬虫
- 从hadoop-0.20.2升级到hadoop-1.0.3
- ethtool的内核流程跟踪
- 程序设计与算法----动态规划之最长上升子序列
- 用Java语言编写的随机彩色验证码
- c语言用户给顺序表输入值,C语言与数据结构实验指导(删减程序版)课案.docx
- 关于 springboot 的自动配置
- java技术管理的简历_基于javaweb个人简历生成及管理系统.doc
- SCSI设备:SCSI接口图片说明
- python爬虫某招聘数据进行可视化
- 【太美了】【Crystal Castle.水晶城堡】【严泽远作品】
- 分享30个PHP源码,总有一款适合你
- 网卡属性全是英文怎么搞
- 4.CRH寄存器和CRL寄存器
- (Ⅲ)使用七牛云作为图床获取外链方式总结(已更换为使用PicGO+腾讯云COS)...
- AtCoder Grand Contest 049 A - Erasing Vertices
热门文章
- swiper vue 上一页_swiper在vue中正确的使用方法
- 游戏开发论坛_微信小游戏增速35% 重度游戏最高单款累计流水8亿 | 游戏茶馆
- python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
- java 文件目录操作_Java---文件夹及文件操作
- HDFS中JAVA API的使用
- 权限管理----用户与模块关系
- 听孔文达老师《IT职业规划经验谈》WEBCAST笔记
- Evaluation for Odometry里程计精度评估
- 特征值和特征向量(整理)
- 第29课 - 排序课后练习