前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TestNG的用例执行失败重试机制

TestNG的用例执行失败重试机制

原创
作者头像
流年Felix
修改2023-08-19 13:24:11
7040
修改2023-08-19 13:24:11
举报
文章被收录于专栏:接口自动化测试平台
代码语言:javascript
复制
在使用TestNG框架做自动化测试过程中 ,也会存在一些不稳定的场景,导致用例执行失败。
例如UI自动化执行过程中不稳定,或者有些场景比如订单支付,并不会立马返回支付成功的状态,需要轮询多次
才能查到支付成功的状态,对于这种场景testNG也提供了重试的机制,常见的2种:1通过注解实现,2全局配置方式

一、注解实现失败重试

1.1 创建TestngRetry实现IRetryAnalyzer接口

代码语言:javascript
复制
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class TestngRetry implements IRetryAnalyzer {
    static int maxRetry = 3;
    private int retry = 0;

    public boolean retry(ITestResult iTestResult) {
        if (retry < maxRetry) {
            retry++;
            System.out.println("断言失败,重试第"+retry+"次");
            return true;
        }
        return false;
    }
}

1.2 创建测试方法 使用注解: @Test(retryAnalyzer = TestngRetry.class)

代码语言:javascript
复制
import org.testng.Assert;
import org.testng.annotations.*;

public class TestDemo {
    @Test(retryAnalyzer = TestngRetry.class)
    public void t1() {
        System.out.println("执行Testcase");
        Assert.assertTrue(true);
    }
}

1.3 用例执行成功时,不会进行重试

1.4 用例执行失败,做多重试3次,一共执行了4次

二 全局配置方式实现

2.1 创建类:RetryListener 实现 IAnnotationTransformer接口

代码语言:javascript
复制
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class RetryListener implements IAnnotationTransformer {
    public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) {
        IRetryAnalyzer iRetryAnalyzer = iTestAnnotation.getRetryAnalyzer();
        if (iRetryAnalyzer == null) {
            iTestAnnotation.setRetryAnalyzer(TestngRetry.class);
        }
    }
}

2.2 testng.xml配置RetryListener

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Default Suite">
  <listeners>
    <listener class-name="RetryListener"></listener>
  </listeners>
  <test thread-count="5" name="AutoTest">
    <classes>
      <class name="TestDemo"/>
    </classes>
  </test>
</suite> 

2.3 选中testng.xml运行用例

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、注解实现失败重试
    • 1.1 创建TestngRetry实现IRetryAnalyzer接口
      • 1.2 创建测试方法 使用注解: @Test(retryAnalyzer = TestngRetry.class)
        • 1.3 用例执行成功时,不会进行重试
          • 1.4 用例执行失败,做多重试3次,一共执行了4次
          • 二 全局配置方式实现
            • 2.1 创建类:RetryListener 实现 IAnnotationTransformer接口
              • 2.2 testng.xml配置RetryListener
                • 2.3 选中testng.xml运行用例
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档