Как не показывать неизвестные / пропущенные результаты в отчете по экстентам

Я использую 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());
}
Другие вопросы по тегам