使用的监听类有:IRetryAnalyzer、TestListenerAdapter、IAnnotationTransformer

public class Retry implements IRetryAnalyzer {

    private int retryCnt = 0;
private int maxRetryCnt = 1; @Override
public boolean retry(ITestResult iTestResult) {
if (retryCnt<maxRetryCnt){
retryCnt++;
return true;
}
return false;
} // 用于重置retryCnt
public void reset() {
retryCnt = 0;
} }
public class RetryListener implements IAnnotationTransformer {
@Override
public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) { IRetryAnalyzer retry = iTestAnnotation.getRetryAnalyzer();
if (retry == null) {
iTestAnnotation.setRetryAnalyzer(Retry.class);
} }
}
/**
* 使用dataProvider时,每个case运行结束都强制重置重试次数,如果失败,则重试结束后,重置次数
*/
public class TestngListener extends TestListenerAdapter { @Override
public void onTestSuccess(ITestResult tr) {
super.onTestSuccess(tr);
// 对于dataProvider的用例,每次成功后,重置Retry次数
Retry retry = (Retry) tr.getMethod().getRetryAnalyzer();
retry.reset();
} @Override
public void onTestFailure(ITestResult tr) {
super.onTestFailure(tr);
// 对于dataProvider的用例,每次失败后,重置Retry次数
Retry retry = (Retry) tr.getMethod().getRetryAnalyzer();
retry.reset();
} }

新建测试类

public class MyTest {
@Test(dataProvider = "d1")
public void dd(int i) {
System.out.println("i="+i);
int count = 0;
Assert.assertEquals(i,5);
}
@DataProvider(name="d1")
public Object[][] aa() {
return new Object[][] { { 11},
}; }
}

testng的xml文件加入listener

<test name="test">
<packages>
<package name="qjf"></package>
</packages>
</test>
<listeners>
<listener class-name="com.crm.Retry.RetryListener"></listener>
<listener class-name="com.Retry.TestngListener"></listener>
</listeners>

运行该xml文件,失败后又重试了1次,重试的那一次背忽略

参考:https://ntflc.com/2018/10/18/TestNg-Retry-Failed-Tests-with-DataProvider/#more

testng失败自动重试的更多相关文章

  1. testng 失败自动截图

    testng执行case failed ,testng Listener会捕获执行失败,如果要实现失败自动截图,需要重写Listener的onTestFailure方法 那么首先新建一个Listene ...

  2. 精讲RestTemplate第8篇-请求失败自动重试机制

    本文是精讲RestTemplate第8篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层H ...

  3. 精讲响应式WebClient第6篇-请求失败自动重试机制,强烈建议你看一看

    本文是精讲响应式WebClient第6篇,前篇的blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方 ...

  4. Cypress系列(65)- 测试运行失败自动重试

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 重试的介绍 学习前的三问 什么是重试测试 ...

  5. TestNG失败自动截图

    转自:https://www.cnblogs.com/tobecrazy/p/4814813.html

  6. 如何解决testng执行用例失败自动重跑问题

    注: 以下内容引自 http://blog.csdn.net/MenofGod/article/details/72846649 看过几个相关问题的帖子,内容类似,不过这篇解决问题的步骤和代码比较清晰 ...

  7. TestNG监听器实现用例运行失败自动截图、重运行功能

    注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...

  8. MQ消费失败,自动重试思路

    在遇到与第三方系统做对接时,MQ无疑是非常好的解决方案(解耦.异步).但是如果引入MQ组件,随之要考虑的问题就变多了,如何保证MQ消息能够正常被业务消费.所以引入MQ消费失败情况下,自动重试功能是非常 ...

  9. [转载]rabbitmq可靠发送的自动重试机制

    转载地址http://www.jianshu.com/p/6579e48d18ae http://www.jianshu.com/p/4112d78a8753 接这篇 在上文中,主要实现了可靠模式的c ...

随机推荐

  1. 关于MySql的坑

    今天弄hibernate的时候数据库死活连不上 估计mybatis也够呛 搞了好几个小时也不行,最后问题是mysql驱动版本过低,需要换高一些版本的驱动 另一个就是一个ssl方面的错误 连接的时候要把 ...

  2. mysql 的 3306、33060 端口区别

    Port 3306 is the default port for the MySQL Protocol, which is used by the mysql client, MySQL Conne ...

  3. NameNode和SecondaryNameNode

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_37838429/artic ...

  4. 记一次PATH环境变量设置不生效的问题

    问题:卸载原有版本jdk后,如下图在/etc/profile中配置新的环境变量且source /etc/profile 生效配置后,JAVA_HOME值都正确,但PATH变量值还是不对 echo $P ...

  5. 命令行创建react.js项目

    npm install -g create-react-app  /*搭建一个全局的脚手架*/ create-react-app my-demo        /*创建项目 my-demo是项目名字* ...

  6. Lexicographical Substring Search SPOJ - SUBLEX (后缀数组)

    Lexicographical Substrings Search \[ Time Limit: 149 ms \quad Memory Limit: 1572864 kB \] 题意 给出一个字符串 ...

  7. timeout/timelimit

    timelimit

  8. 常用方法 读取 Excel的单位格 为 日期格式 的数据

    原文:地址忘了 百度应该有 Excel的单元格为日期格式,数值型日期,可用下面这个方法得到正常的数据 /// <summary> /// 数字格式的时间 转换为 字符串格式的时间 /// ...

  9. 51 Nod 1135 原根

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P ...

  10. Linux 和 windows下查看运行命令的位置

    经常遇到要查看某个命令的运行文件在哪儿! 比如说vue cli,经常使用vue命令创建项目,如果你对nodejs的全局包安装目录了解可能一下就找到了, 蛋疼的是不一定每个命令都是nodejs下的,有可 ...