在TestNG中重试失败的测试

二十二、testng二次开发之用例失败重试 testng二次开发之用例失败重试 IAnnotationTransformer源码类 public interface IAnnotationTransformer extends ITestNGListener 抽象方法 public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod); ITestAnnotation源码类 阅读详情

TestNG 是一个很棒的测试框架。它提供了许多功能,可以帮助我们构建健壮且可维护的框架。在本章中,我们将学习如何在TestNG中重试失败的测试。

您必须在自动化测试运行期间看到随机故障。这些失败可能不一定是因为产品错误。这些失败可能是由于以下原因

  • 随机浏览器问题或浏览器无响应
  • 随机机器问题
  • 服务器问题,如服务器响应中的意外延迟

这些失败是真实的,应该进行调查,但这些失败不一定是因为产品中存在错误。TestNG提供了一个很棒的功能,您可以使用该功能多次重试测试用例,然后将其声明为失败。这意味着,如果您发现故障,可以自动重新运行测试以确保测试始终失败。这样可以减少由于随机问题导致的错误故障,并且您可以花更多时间调试真正的故障。

在本章中,让我们研究如何在TestNG中实现失败机制的重试。为了实现这一点,我们必须首先了解org.testng.IRetryAnalyzer接口。接口定义是

 

1

2

3

4

5

6

7

8

9

10

public interface IRetryAnalyzer {

 

  /**

   * Returns true if the test method has to be retried, false otherwise.

   *

   * @param result The result of the test method that just ran.

   * @return true if the test method has to be retried, false otherwise.

   */

  public boolean retry(ITestResult result);

}

该接口只有一种方法

 

1

public boolean retry(ITestResult result);

一旦测试方法失败,将调用此方法。您可以从ITestResult输入参数到此方法获取测试的详细信息,如上面的方法定义所示。如果要重新执行失败的测试,此方法实现应返回true,如果不想重新执行测试,则返回false。通常,此接口的实现决定根据您的要求基于固定计数器或复杂逻辑重试失败测试的次数。这个界面的简单实现如下所示

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package Tests;

 

import org.testng.IRetryAnalyzer;

import org.testng.ITestResult;

 

public class RetryAnalyzer implements IRetryAnalyzer {

 

int counter = 0;

int retryLimit = 4;

/*

* (non-Javadoc)

* @see org.testng.IRetryAnalyzer#retry(org.testng.ITestResult)

*

* This method decides how many times a test needs to be rerun.

* TestNg will call this method every time a test fails. So we

* can put some code in here to decide when to rerun the test.

*

* Note: This method will return true if a tests needs to be retried

* and false it not.

*

*/

 

@Override

public boolean retry(ITestResult result) {

 

if(counter < retryLimit)

{

counter++;

return true;

}

return false;

}

}

我们现在有一个简单的IRetryAnalyzer实现。仔细查看重试方法实现,此方法可确保重试失败的测试4次。这是因为我们指定了retryLimit = 4;

 

让我们看看我们如何使用它,有两种方法可以在测试中包含重试分析器

  1. 通过在@Test注释中指定retryAnalyzer值
  2. 通过在Listener接口上实现,在运行时添加Retry分析器

 

 在@Test注释中指定retryAnalyzer属性

我们可以通过简单地使用@Test的以下语法来实现这一点(retryAnalyzer =“IRetryAnalyzer实现类”)。下面是执行此操作的代码

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import org.testng.Assert;

import org.testng.annotations.Test;

 

public class Test001 {

 

@Test(retryAnalyzer = Tests.RetryAnalyzer.class)

public void Test1()

{

Assert.assertEquals(false, true);

}

 

@Test

public void Test2()

{

Assert.assertEquals(false, true);

}

}

这里我们有两个测试,一个测试指定哪个类用作重试分析器。如果我们运行此测试,我们将获得以下结果

在TestNG中重试失败的测试

您可以看到Test1运行了4次,并且仅在上次运行时标记为失败。由于重试分析器,它运行了4次。但是,看看Test2我们可以看到它只运行一次。这是显而易见的,因为我们从未为Test2指定retryAnalyzer。

让我们看一下将retryAnalyzer添加到测试中的第二种方法。

在运行时指定retryAnalyzer

在这种情况下,您需要实现ITestAnnotationTransformer接口。ITestAnnotationTransformer接口属于称为TestNG Listeners的广泛接口类别。你可以在这里阅读更多。此接口定义如下所示

 

1

2

3

4

5

6

7

public class AnnotationTransformer implements IAnnotationTransformer {

 

@Override

public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {

// TODO Auto-generated method stub

}

}

此接口用于在运行时以编程方式向测试方法添加注释。在测试运行期间为每个测试调用Transform方法。这个接口的简单实现可以帮助我们像这样设置重试分析器

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package Tests;

 

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

 

import org.testng.IAnnotationTransformer;

import org.testng.annotations.ITestAnnotation;

 

public class AnnotationTransformer implements IAnnotationTransformer {

 

@Override

public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {

annotation.setRetryAnalyzer(RetryAnalyzer.class);

}

}

一旦我们实现了IAnnotationTransformer,我们只需要在testng run xml中将它添加为一个监听器。像这样

 

1

2

3

4

5

6

7

8

9

10

11

12

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

 

<suite name="RetryFailedTests" verbose="1" >

<listeners>

        <listener class-name="Tests.AnnotationTransformer"/>

  </listeners>

  <test name="RetryMulitple">

    <classes>

      <class name="Tests.Test001"/>

    </classes>

  </test>

</suite>

现在我们不必在@Test注释中指定retryAnalyzer属性。更新的测试将如下所示

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package Tests;

 

import org.testng.Assert;

import org.testng.annotations.Test;

 

public class Test001 {

 

@Test

public void Test1()

{

Assert.assertEquals(false, true);

}

 

@Test

public void Test2()

{

Assert.assertEquals(false, true);

}

}

您现在可以简单地运行测试,看看TestNG每次重新执行Test1和Test2 4次。这就是这个话题。在下一节中,我们将看到如何使用自定义Java Annotation直接指定测试中的重试限制计数。

【TestNG自动化测试框架详解】 TestNG是一款设计测试用例执行流程的测试框架。 阅读详情

相关推荐

Android 13 系统定制:实现第三方Launcher预置与原生Launcher3的共存切换

本文详细介绍了在Android 13系统中实现第三方Launcher预置与原生Launcher3共存切换的技术方案。通过修改ResolverActivity逻辑、处理首次启动设置以及优化用户切换机制,开发者可以灵活定制默认Launcher,同时保留用户自由选择权。文章还提供了常见问题排查指南和性能优化建议,帮助提升双Launcher方案的稳定性和用户体验。

weixin_30275415的博客 127

1、testng失败重跑机制 2、编码执行testng 3、Tomandy关于testng博客链接 4、testng_javadoc 5、testng教程链接

先附上大神简书链接:https://www.jianshu.com/u/2ba4f01cbc58 testng链接:https://www.jianshu.com/p/8b382ea49021 javadoc之testng:javadoc 一、失败重跑机制: 前言 在案例执行过程中,往往需要对失败的案例进行重跑,TestNG亦提供相应的实现方案。 示例 当套件中的测试执行失败时,TestNG都会创建一个名为testng-failed.xml的文件,该XML文件包含运行失败的方法的信息,允许您快

Java后端技术栈 414

易智联LM401模块学习(一)——初识Lora

Lora

weixin_46046597的博客 1054

TestNG失败重试

TestNG重试

weixin_45629019的博客 444

NLP实践——利用自己的语料进行Mask Language Model预训练

#!/usr/bin/env python # coding: utf-8 # In[1]: import os import json import copy from tqdm.notebook import tqdm import torch from torch.optim import AdamW from torch.utils.data import DataLoader, Dataset from transformers import BertForMaskedLM, BertTo

weixin_44826203的博客 1万+

Simulink玩转PMSM无感FOC:从IF强拖参数调试到切换失败的避坑指南

本文深入探讨了Simulink在PMSM无感FOC控制中的IF强拖启动参数调试与切换避坑技巧。通过详细解析强拖加速、速度维持和闭环切换三大阶段的设计逻辑,以及五个常见陷阱的解决方案,帮助工程师快速定位启动失败和切换震荡问题。文章还提供了典型故障的波形诊断方法和高级调试工具链优化建议,是电机控制领域的实用指南。

weixin_29164843的博客 408

TestNG接口自动化3重复执行失败用例的方法

由于存在查询过快导致请求失败等的操作,学习了一下可以重复执行失败的测试用例并且可以设置重复执行的次数。

weixin_43706470的博客 587

GEE数据融合——Landsat (collection 2,level 2 )4、5、7、8、9长时间序列影像数据融合和视频导出分析

长时间序列影像数据融合是指将Landsat影像数据集合2级2(Level 2)中的4、5、7、8和9这五个卫星的数据进行融合。具体来说,这包括将同一地点的多个卫星影像数据进行处理和整合,以产生一个单一的、具有更高质量的影像产品。在长时间序列影像数据融合中,首先需要对不同卫星的影像数据进行校正,以消除不同卫星之间的光谱差异、辐射度问题和几何纠正误差等。然后,通过使用融合算法,将多个卫星的影像数据进行组合,以生成一张全新的、高质量的合成影像。

此星光明博客 1735

TestNG - 运行失败的test

testNG 重试失败的case有两种方式: 1、所有case全部执行完后,主动触发执行所有失败的case 2、case失败后立即重试

Clever99的博客 1014

LPDDR5 学习笔记01:功能概述

LPDDR5/LPDDR5X SDRAM设备采用8/16DQ通道架构,支持2Gb-32Gb容量。通过CK命令时钟和更快的WCK数据时钟协同工作,7个CA引脚传输控制信息,支持2:1或4:1的WCK:CK比例。设备提供BG/8B/16B三种存储模式选择,分别支持不同数据速率(最高8.533Gbps)和突发长度。采用0.5V VDDQ电源电压,实现高速双倍数据速率传输,并通过差分WCK时钟完成数据采样。读写采用突发访问机制,需先激活命令再执行读写操作。新型LPDDR5X仅支持BG和16B模式,优化了高速性能。

一只豌豆象的博客 2203

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 目录 解决问题 解决思路 解决方法 T1、修改默认配置 T2、修改后缀参数(此方法是其他网友推荐,博主没有尝试) T3、如果以上还不成功,这个时候很可能是环境配置有问题 解决问题 使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 解决思路 使用jupyter notebook命令打开原先存的.ipynb文件突然消失,说明...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5116

在TestNG Framework中实现IRetryAnalyzer重试失败测试

在我们之前在TestNG中重试失败测试的帖子中,我们讨论了IRetryAnalyzer接口以及我们可以为测试指定Retry Analyzer的各种方法。在这篇文章中,我们将以 最具设计意识的方式研究如何 在TestNG框架中实现IRetryAnalyzer重试失败测试,以便我们可以进行可维护且易于管理的测试。这篇文章将要求您对Java注释有一个很好的理解。我们将创建一个自定义注释,我们将在@Tes...

ProgrammerFan0101的博客 900

基于卷积神经网络的遥感图像地物分类

AI:89-基于卷积神经网络的遥感图像地物分类 基于卷积神经网络的遥感图像地物分类是一个令人兴奋的领域,它在环境监测、城市规划、农业、国防等领域具有广泛的应用。深度学习技术为我们提供了更准确、高效的工具,有望在未来进一步提高分类性能。在本文中,我们探讨了卷积神经网络的工作原理、数据准备、模型构建、训练和评估过程,并提供了多个代码示例。此外,我们讨论了地物分类的应用和挑战,以及未来的发展趋势。

一键难忘的博客 2717

使用TestNg 测试框架时自动化测试失败重试解决方案

自动化测试时,有时会因为网络不稳定,或者测试环境、第三方环境正在重启而造成用例运行结果不稳定,导致时而能测试通过时而又不通过的测试用例。这些难以重现的环境因素造成的用例失败,经常会耗费排查时间,然而又没有太多改善的空间。针对这种情况,可以基于TestNG的重试器和监听器实现失败结果的重试和监听,一旦监听到失败的测试用例,启动定制的重试方法和处理方法来实现重新运行。 IRetryAnalyzer实...

Sundy_sc的专栏 1670

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TestNG 失败重试,动态绑定到所有测试方法

对一个测试方法需要失败重试,只需实现 IRetryAnalyzer 接口,然后注册到测试方法: public class Retry implements IRetryAnalyzer { int i = 0; int max = 4; @Override public synchronized boolean retry(ITestResult...

weixin_30597269的博客 132

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TestNG测试框架的使用-Case运行失败后重试

参考这一片博客:https://blog.csdn.net/hujyhfwfh2/article/details/84950119 我们今天在它的基础上进行改造 1:导入依赖 需要导入log4j2的Maven依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt; &lt;a...

hujyhfwfh2的博客 1112

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java8 retry 重试机制_TestNG-失败重试功能

引言TestNG 是一个很棒的测试框架。它提供了许多功能,可以帮助我们构建健壮且易于维护的框架。接下来我们将学习如何在TestNG中重试失败的测试用例。在执行自动化测试用例(特别是UI自动化)的过程中,您一定遇到过有一些用例第一遍失败了,重试过又过了。引这种问题原因有很多:网络问题、服务器问题、脚本健壮性不够等,失败的原因不是产品的bug,但是我们要花很多时间定位问题的原因。TestNG提供一个很...

weixin_39535217的博客 397

UI自动化测试系列之TestNG----失败用例自动重试功能二

之前写过一篇文章,说失败用例自动重试不运行

zzzghj的专栏 2116

【testng失败重试,去除重试的重复用例统计】

【代码】【testng失败重试,去除重试的重复用例统计】

xing_gy的博客 226

Java+Selenium+Testng-web UI自动化测试框架-10用例执行失败后重试

在自动化测试执行过程中,难免会出现因为执行机的环境或者延时等问题导致的用例失败问题,对于这些非功能问题导致的用例执行失败,我们希望这个用例能够重新执行一次或几次,从而尽量让最终的测试结果是功能相关的fail。 本框架实现用例执行失败后重跑的方法如下: 实现 IRetryAnalyzer接口,重写里面的retry方法。 然后通过注解转换器在每一个testcase后面加上 retryAnalyz...

weixin_42409365的博客 1174

junit依赖_TestNG之失败重跑&JUnit支持

一.重跑失败的测试用例 每次每个测试套件中有测试用例执行失败,TestNG都会在测试结果路径下生成一个testng-failed.xml文件,这个xml文件包含了一些重跑那些失败方法的必要信息,允许你只执行那些失败的方法,而不需要再次执行所有的测试方法。一个典型的例子如下:java -classpath testng.jar;%CLASSPATH% org.testng.TestN...

weixin_39849239的博客 265

testng执行参数_TestNG失败重试功能

引言TestNG是一个很棒的测试框架。它提供了许多功能,可以帮助我们构建健壮且易于维护的框架。接下来我们将学习如何在TestNG中重试失败的测试用例。在执行自动化测试用例(特别是UI自动化)的过程中,您一定遇到过有一些用例第一遍失败了,重试过又过了。引这种问题原因有很多:网络问题、服务器问题、脚本健壮性不够等,失败的原因不是产品的bug,但是我们要花很多时间定位问题的原因。TestNG...

weixin_36331580的博客 252

testng运行后的结果乱码_详解TestNG中的用例失败重试和自定义监听器

TestNG预留了一些接口给用户来实现用户特殊的需求,这里重点介绍用例失败重试和自定义监听器。本文面向的读者是有一定编码能力并且熟悉TestNG框架的测试人员,文章默认读者掌握了java接口,继承,重写等基础知识,如果大家能够轻松掌握本文,那么大家就完全胜任了测试开发这一职位;如果大家的Java编码水平一般,那么可以先学习以下两篇关于TestNG的文章:十分钟上手TestNg详解TestNg中的依...

weixin_39842617的博客 207

使用testng listener实现测试用例失败重跑功能

我们通过重写testng的retry方法和transform方法来实现用例失败重跑的功能。首先添加两个文件TestngRetry.javapublic class TestngRetry implements IRetryAnalyzer { private static Logger logger = Logger.getLogger(TestngRetry.class); pri

lala9517的专栏 6498
上一篇: 在TestNG Framework中实现IRetryAnalyzer重试失败测试
下一篇: TestNG监听
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值