В процессе автоматизированного тестирования с использованием фреймворка TestNG , также будут возникать нестабильные сценарии, приводящие к сбою выполнения вариантов использования.
Например, процесс выполнения автоматизации пользовательского интерфейса нестабильен или в некоторых сценариях, таких как оплата заказа, статус успешного платежа не будет возвращен немедленно, и требуется множественный опрос.
Только после этого вы сможете проверить статус успешного платежа.,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("Выполнить тестовый пример");
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>