我在TestNG中使用IRetryAnalyzer类来重新启动失败的测试(最多5次尝试)。现在,如果我进行测试并且在通过之前它失败了三次,它会说:
测试运行:4,失败:3,错误0,跳过0.
我希望结果显示的是:
测试运行:1,失败:0,错误0,跳过0。
基本上,除非所有5次重播都失败,否则不要将其视为失败。我该怎么做呢?
答案 0 :(得分:0)
因为没有人回复,我试一试。
我在阅读你的帖子时只是随意的想法,而我正在寻找解决我问题的方法......
您可以通过@AfterTest
ITestResult result
方法中获得测试结果
@AfterMethod
public void AfterMethod_CheckForFailure(ITestResult result, Method m)
当@AfterMethod
注释的方法完成时调用@Test
。
能够从static
类中使用static
成员读取当前迭代
如果它的<5
然后使用
result.setStatus(ITestResult.SUCCESS); // or what ever status you want
setCurrentTestResult(result);
不知道如果有效,但看起来我可以:)祝你好运
答案 1 :(得分:0)
我刚刚完成了这项工作,我是如何做到的,因为我在最后一次成功之前考虑了所有事情。我这样做是为了允许3次重新运行,这是我使用的代码:
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;
public class RetryAnalyzer implements IRetryAnalyzer {
private int count = 0;
private int maxCount = 2;
@Override
public boolean retry(ITestResult result) {
if (!result.isSuccess()) {
if (count < maxCount) {
count++;
result.setStatus(ITestResult.SUCCESS);
String message = Thread.currentThread().getName() + ": Error in " + result.getName() + " Retrying "
+ (maxCount + 1 - count) + " more times";
System.out.println(message);
Reporter.log(message);
return true;
} else {
result.setStatus(ITestResult.FAILURE);
}
}
return false;
}
}
这里的关键是当我还在重试时,我将结果设置为成功
result.setStatus(ITestResult.SUCCESS)
当尝试完成但仍然失败时,将其设置为失败
result.setStatus(ITestResult.FAILURE);