2

テストケースが最初の実行で失敗した場合、retryAnalyzer はそれを再度実行します。私の場合、1 回目の実行が失敗し、2 回目の実行が成功した場合、エクステント レポートに 2 回目の実行のみの結果を表示したいと考えています。しかし、レポートで両方のテスト ケースの結果を取得しています。

以下は私のコードです。

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");
    }
}
}

この場合、テスト ケースが 1 回目の実行で失敗した場合、そのテスト ケースのステータスは「不明」と表示され、実行がリトライ (2 回目の実行) で成功した場合、成功率は 100 ではなく 50% と表示されます。 % は、未知のパーセンテージもカウントするためです。

このテスト ケースの結果がレポートに表示されないようにするには、以下のループ条件でどのような変更を行う必要がありますか。

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

提案してください。

4

1 に答える 1

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());
}
于 2020-04-23T19:15:06.387 に答える