在使用TestNG框架做自动化测试过程中 ,也会存在一些不稳定的场景,导致用例执行失败。
例如UI自动化执行过程中不稳定,或者有些场景比如订单支付,并不会立马返回支付成功的状态,需要轮询多次
才能查到支付成功的状态,对于这种场景testNG也提供了重试的机制,常见的2种:1通过注解实现,2全局配置方式
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;
}
}
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);
}
}
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);
}
}
}
<?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>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。