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实现失败重运行相关推荐

  1. python pip安装指定版本unittest_你们想要的unittest用例失败重运行,解决方案来啦!...

    前言 很多小伙伴一直在诟病 unittest,说 unittest 相对 pytest 来说太鸡肋了,pytest 中提供了很多高级功能 unittest 中都没有. 在这里还是想为 unittest ...

  2. python3 unittest框架失败重跑加截图支持python2,python3

    github源码地址下载:https://github.com/GoverSky/HTMLTestRunner_cn.git 解压文件后取出/HTMLTestRunner_cn.py文件丢进C:\Py ...

  3. Pytest之重运行及生成测试报告

    VOL 156 09 2020-09 今天距2021年113天 这是ITester软件测试小栈第156次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  4. python selenium安装失败_python:学习selenium遇到的坑

    最近在学习python,在使用selenium做自动化时候遇上各种坑,有很多是自己不小心弄出来的,下面记录下自己学习中遇上的坑: 用pip安装selenium时候一直报错,提示没有权限,即使我用了su ...

  5. 安装ISA2004后,加入域时提示:远程过程调用失败且未运行的解决办法

    简单的说就是在工作组的环境下,在windows 2003 server w/sp1上安装ISA2004后,把此服务器加入域时提示"远程过程调用失败且未运行"的错误信息.解决方法:先 ...

  6. Pycharm:解决点击重运行(Rerun)没有反应

    Pycharm:解决点击重运行(Rerun)没有反应 1.软件环境 2.问题描述 3.解决方法 ⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:

  7. selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python23)

    优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 ...

  8. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

    一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...

  9. selenium python实例录制运行_WEB自动化测试工具selenium录制器使用笔记

    简介 selenium录制器是最近刚流行起来的一个WEB自动化测试工具,由多测测团队开发. Selenium录制器采用关键字驱动的理念,简化测试用例的创建和维护,可以直接运行在浏览器中,就像真正的用户 ...

  10. Selenium IDE安装与运行

    Selenium IDE 是什么? Selenium IDE:是一个Firefox插件,用于记录和播放用户与浏览器的交互. (录制Web操作脚本) 为什么要学习Selenium IDE? 1. 使用S ...

最新文章

  1. 关于ASP.NET Web 部件连接的引入
  2. 项目式教学:为学生创造沉浸式学习体验
  3. JavaScript中数组的增删改查以及应用方式
  4. java union方法参数_Java Geometry.union方法代碼示例
  5. python增量爬虫_python爬虫Scrapy框架之增量式爬虫
  6. 从hadoop-0.20.2升级到hadoop-1.0.3
  7. ethtool的内核流程跟踪
  8. 程序设计与算法----动态规划之最长上升子序列
  9. 用Java语言编写的随机彩色验证码
  10. c语言用户给顺序表输入值,C语言与数据结构实验指导(删减程序版)课案.docx
  11. 关于 springboot 的自动配置
  12. java技术管理的简历_基于javaweb个人简历生成及管理系统.doc
  13. SCSI设备:SCSI接口图片说明
  14. python爬虫某招聘数据进行可视化
  15. 【太美了】【Crystal Castle.水晶城堡】【严泽远作品】
  16. 分享30个PHP源码,总有一款适合你
  17. 网卡属性全是英文怎么搞
  18. 4.CRH寄存器和CRL寄存器
  19. (Ⅲ)使用七牛云作为图床获取外链方式总结(已更换为使用PicGO+腾讯云COS)...
  20. AtCoder Grand Contest 049 A - Erasing Vertices

热门文章

  1. swiper vue 上一页_swiper在vue中正确的使用方法
  2. 游戏开发论坛_微信小游戏增速35% 重度游戏最高单款累计流水8亿 | 游戏茶馆
  3. python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
  4. java 文件目录操作_Java---文件夹及文件操作
  5. HDFS中JAVA API的使用
  6. 权限管理----用户与模块关系
  7. 听孔文达老师《IT职业规划经验谈》WEBCAST笔记
  8. Evaluation for Odometry里程计精度评估
  9. 特征值和特征向量(整理)
  10. 第29课 - 排序课后练习