如何在范围报告中显示未知/跳过的结果

时间:2016-12-07 07:25:56

标签: java extentreports extent

我在selenium代码中使用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");
    }
}
}

在这种情况下,如果测试用例在第一次执行时失败,它会将该测试用例的状态显示为" unknown",并假设执行过程重试(第二次执行),传递百分比显示为50%,而不是100%,因为它也会计算未知的百分比。

我应该在下面的循环条件下做些什么更改,以便此测试用例的结果不会显示在报告中。

if (result.getStatus() == ITestResult.FAILURE && firstTry == true) { }

请建议。

1 个答案:

答案 0 :(得分: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());
}