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

施超
2023-12-01

在自动化测试执行过程中,难免会出现因为执行机的环境或者延时等问题导致的用例失败问题,对于这些非功能问题导致的用例执行失败,我们希望这个用例能够重新执行一次或几次,从而尽量让最终的测试结果是功能相关的fail。

本框架实现用例执行失败后重跑的方法如下:

实现 IRetryAnalyzer接口,重写里面的retry方法。

然后通过注解转换器在每一个testcase后面加上 retryAnalyzer标签(retryAnalyzer = MyRetry.class)。

util包下创建两个类Retry和RetryListener,代码如下:

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import util.enums.ConfigItem;

/**
 * 失败后重新执行case.
 */
public class Retry implements IRetryAnalyzer{
    private int retryCount = 1;  
    private static int maxRetryCount =2;//重试次数
    
    public boolean retry(ITestResult result) {   
        if (retryCount < maxRetryCount) { 
            retryCount++; 
            return true; 
        } 
        return false; 
    }
}

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;


public class RetryListener implements IAnnotationTransformer {
    @Override 
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, 
            Method testMethod) { 
         IRetryAnalyzer retry = annotation.getRetryAnalyzer(); 
            if (retry == null) { 
                annotation.setRetryAnalyzer(Retry.class);  
            } 
           
    } 
}

 最后在testng的.xml文件中加入

<listeners>         
            <listener class-name="util.RetryListener"/>
</listeners>

 类似资料: