Как не показывать неизвестные / пропущенные результаты в отчете по экстентам
Я использую RetryAnalyzer в коде селена, в котором, если тестовый пример завершится неудачно при первом выполнении, retryAnalyzer снова выполнит его. В моем случае, если первое выполнение завершается неудачно, а второе - проходит, я хочу показать результаты только второго выполнения в отчетах об объемах. Но я получаю оба результата теста в отчете.
Ниже мой код.
ExtentTest test;
int maxRetryCount = 1;
@AfterMethod
protected void afterMethod(ITestResult result) {
boolean firstTry = true;
if(maxRetryCount>0){
if (result.getStatus() == ITestResult.FAILURE && firstTry == true) {
firstTry = false;
} else if (result.getStatus() == ITestResult.SKIP) {
test.log(LogStatus.SKIP, "Test skipped " + result.getThrowable());
} else if (result.getStatus() == ITestResult.FAILURE && firstTry == false) {
test.log(LogStatus.ERROR, test.addScreenCapture(imgPath));
test.log(LogStatus.FAIL, result.getThrowable());
} else {
test.log(LogStatus.PASS, "Test passed");
}
}else{
if (result.getStatus() == ITestResult.FAILURE) {
test.log(LogStatus.ERROR, test.addScreenCapture(imgPath));
test.log(LogStatus.FAIL, result.getThrowable());
} else if (result.getStatus() == ITestResult.SKIP) {
test.log(LogStatus.SKIP, "Test skipped " + result.getThrowable());
} else {
test.log(LogStatus.PASS, "Test passed");
}
}
}
в этом случае, если тестовый пример завершается неудачно при первом выполнении, он показывает статус этого тестового примера как "неизвестный", и предположим, что выполнение проходит повторно (повторное выполнение), процент прохода отображается как 50%, а не 100%, поскольку он также учитывает процент неизвестного.
Какие изменения я должен сделать в условиях ниже цикла, чтобы результат этого теста не отображался в отчете.
if (result.getStatus() == ITestResult.FAILURE && firstTry == true) { }
Пожалуйста, предложите.
0 ответов
Вы можете удалить текущий тестовый узел, если статус теста Пропущен. Примерно так будет работать...
@BeforeMethod(alwaysRun=true)
public void beforeMethod(){
//be sure to create node in the BeforeMethod
HtmlReporter.createNode("CurrentTest");
}
@AfterMethod(alwaysRun = true)
public void afterMethod(ITestResult result) {
if (result.getStatus() == ITestResult.SKIP) {
HtmlReporter.removeCurrentNode();
}
Код для удаления текущего узла будет выглядеть так:
public static synchronized void removeCurrentNode() {
_report.removeTest(getNode());
}
public static synchronized ExtentTest getNode() {
return extentTestMap.get("node_" + Thread.currentThread().getId());
}