7

失敗したメソッドの TestNG レポートの結果セクションにスクリーンショットを添付する方法を探しています。

これまでのところ、これを実装することで、スクリーンショットをレポーター出力に添付できました。

Reporter.log("<br> <img src=.\\screenshots\\" + fileName + " /> <br>");

しかし、失敗したメソッドのテスト結果セクションにそれらを追加するのにまだ苦労しています。

リスナーを実装し、最初にここで提案された onTestFailure アクションをインターセプトすることができました: How can I include a failure screenshot to the testNG report

その例を次に示します。

    @Override
public void onTestFailure(ITestResult result) { 
    Reporter.setCurrentTestResult(result); 
    Reporter.log("<br> <img src=.\\screenshots\\Untitled.png /> <br>");
    Reporter.setCurrentTestResult(null); 
}

しかし、Reporter.log 関数は引き続き Reporter 出力ログに情報をプッシュしますが、結果 -> 失敗したメソッド -> 失敗したメソッド ログにはプッシュしません。

更新 (2014 年 3 月 14 日): 質問を明確にするためにスクリーンショットを添付しました。問題は、スクリーンショットをキャプチャしてレポートに添付することではありません。その部分はうまく機能します。問題は、スクリーンショットがレポートのテスト出力部分に添付されていることですが、結果 -> 失敗した方法で表示したいです。

ここに画像の説明を入力

4

8 に答える 8

0

また、同じ拡張 Testng TestListenerAdapter も実装しました。スクリーンショットをキャプチャして、onTestFailure を使用して高さ = 100、幅 = 100 のサイズの画像で Testng レポートに添付します。これが問題の解決に役立つ場合は、以下を参照してください

    File scrFile = ((TakesScreenshot) WebdriverManager.globalDriverInstance).getScreenshotAs(OutputType.FILE);
      //Needs Commons IO library
      try {
        FileUtils.copyFile(scrFile, new File(file.getAbsolutePath()+ "/selenium-reports/html/" + result.getName() + ".jpg"));
        Reporter.log("<a href='"+ file.getAbsolutePath()+"/selenium-reports/html/" + result.getName() + ".jpg'> <img src='"+ file.getAbsolutePath()+"/selenium-reports/html/"+ result.getName() + ".jpg' height='100' width='100'/> </a>");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Reporter.setCurrentTestResult(null);
于 2012-06-21T04:18:36.500 に答える
0

失敗したメソッドのスクリーン ショットを表示する場合は、例外をキャプチャしてメッセージの内容を変更し、それに img html を追加する必要があります。例が必要な場合はお知らせください

于 2016-06-20T06:04:15.737 に答える
0

私は同じ問題を抱えていましたが、解決しました。SuitePanel を実装することで、必要に応じてスクリーンショットを追加できます https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/reporters/jq/SuitePanel.java

私は元のコードをほとんど変更しません。

... 
// Description?
String description = tr.getMethod().getDescription();
if (! Strings.isNullOrEmpty(description)) {
    xsb.push("em");
    xsb.addString("(" + description + ")");
    xsb.pop("em");
}
// Add screen shot here
xsb.push(“img”,”src”,imagePath);
xsb.pop(“img”);

xsb.pop(D);
xsb.pop(D);
于 2014-04-16T01:46:49.553 に答える