【发布时间】:2023-03-07 05:22:03
【问题描述】:
以下是用于实现重试逻辑的类
TestRetry 类:
public class TestRetry implements IRetryAnalyzer {
int counter=0;
int retryLimit=2;
@Override
public boolean retry(ITestResult result) {
if (counter < retryLimit) {
TestReporter.logStep("Retrying Test " +result.getName()+" for number of times: "+(counter+1));
counter++;
return true;
}
return false;
}
RetryListener 类:
public class RetryListener implements IAnnotationTransformer {
@Override
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
// TODO Auto-generated method stub
IRetryAnalyzer retry = annotation.getRetryAnalyzer();
if (retry == null) {
annotation.setRetryAnalyzer(TestRetry.class);
}
}}
样品测试:
@Listeners(RetryListener.class)
public class SampleTest {
@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
for (ITestNGMethod method : context.getAllTestMethods()) {
method.setRetryAnalyzer(new TestRetry());
}
}
@Test(priority=0)
public void firsttest() {
System.out.println();
TestReporter.assertEquals("Test", "Test", "pass");
}
@Test(priority=1, dependsOnMethods="firsttest")
public void secondtest() {
TestReporter.assertEquals("Test", "Test1", "fail");
}
@Test(priority=2,dependsOnMethods="secondtest")
public void thirdtest() {
TestReporter.assertEquals("Test", "Test", "pass");
}
}
当我执行上述测试时,以下是输出 firsttest 被执行并通过 secondtest 依赖于 firsttest 并被执行,它失败了 - 重试了 3 次并再次失败 跳过了thirdtest,因为它依赖于secondtest。
按预期实现输出。
问题: 由于测试是依赖的。如果其中一个测试失败,我想从头开始执行整个课程。有什么办法吗?
示例: 如果 secondtest 失败,我想再次执行整个类 SampleTest。
谢谢!
【问题讨论】:
标签: selenium testng retry-logic