TestNG レポートの生成 Selenium: 生成方法は?
⚡ スマートサマリー
TestNG レポートはデフォルトの HTML 結果ファイルです。 TestNG 実行後、テスト出力フォルダに、合格、失敗、スキップされたテストケースと、レポーターのログを書き込みます。
何ですか TestNG レポート?
TestNG レポート は、テスト ケースが実行されると生成されるデフォルトの HTML レポートです。 TestNG。これらのレポートは、テスト ケースに関する情報とプロジェクトのステータスを特定するのに役立ちます。 TestNG の報告 Selenium 各テスト方法ごとに、合格、不合格、スキップの3つの結果を記録することで、テストケースに関するデータを一目で確認できるようになります。
レポートの生成は、手動テストだけでなく自動テストを行う場合にも非常に重要です。
- 結果を見ると、合格したテスト ケースの数、失敗したテスト ケースの数、スキップされたテスト ケースの数を簡単に特定できます。
- レポートを見ればプロジェクトの進捗状況が分かります。
Selenium WebDriverはWebアプリケーションの自動化に使用されますが、それ自体ではレポートを生成する機能はありません。
- その TestNG デフォルトのレポートが生成されます。
- testng.xml ファイルを実行してプロジェクトを更新すると、test-output フォルダーが作成され、そのフォルダーにはレポート出力が格納されます。 TestNG.
- emailable-report.html ファイルを右クリックし、「Web ブラウザで開く」を選択します。
注意: ここで説明する動作は、 TestNG 7.x. リリース TestNG バージョン7.6以降ではJDK 11以上が必要となるため、古いプロジェクトではレポートを作成する前にJDKのレベルを上げる必要がある場合があります。
の種類 TestNG テスト出力フォルダ内のレポート
個々のファイルを開く前に、テスト出力フォルダに実際に何が含まれているかを知っておくと役立ちます。 TestNG 実行ごとに複数の成果物を生成し、それぞれが異なる質問に答える。
| ファイルまたはフォルダ | 中身 | 役に立つとき |
| index.html | 結果、グループ、時間、およびレポーターの出力ビューにリンクするランディングレポート。 | 1つの実行結果を詳細に分析する。 |
| メール送信可能なレポート.html | 各クラスごとに、合格、不合格、スキップされたメソッドをまとめた、自己完結型の単一ページ。 | プロジェクトを開いていない人たちにも結果を共有する。 |
| testng-results.xml | 組み込みのXMLレポーターによって書き込まれた、メソッドごとのステータスと実行時間を含む機械可読なXMLファイル。 | ダッシュボードまたはカスタムパーサーへのデータ入力。 |
| JUnitレポート | JUnit-テストクラスごとに1つのXMLファイルを作成します。 | CI プラグインで、 JUnit 結果のフォーマット。 |
| testng-failed.xml | 失敗したメソッドのみを一覧表示する、生成されたスイートファイル。 | スイート全体ではなく、失敗したテストのみを再実行する。 |
このチュートリアルでは、次に2つのHTMLファイルを開きます。そのため、以下の手順はemailable-report.htmlから始まります。
でレポートを生成する方法 Selenium
方法 1: emailable-report.html
- 「emailable-report.html」オプションをクリックします。
- オプションのWebブラウザをクリックします
以下のスクリーンショットは、test-outputフォルダからemailable-report.htmlファイルを開いた状態を示しています。
出力レポートは次のとおりです。 TestNG 両方のクラスが渡された場合、レポートは次のようになります。
DemoBクラスなどのテストケースを意図的に失敗させるシナリオを考えてみましょう。次に、両方のクラスをtestng.xmlスイートファイルに変換して実行します。結果は次のようになります。 失敗したテストケース.
これは DemoB クラスの結果です。
同様に、クラス DemoA の結果は次のようになります。
方法-2:index.html
- プロジェクト ディレクトリの Index.html を右クリックします。
- Web ブラウザで開くオプションを選択します。次の順序で結果が表示されます。
以下のスクリーンショットは、プロジェクトディレクトリからindex.htmlを開いた状態を示しています。
結果は次のようになります。
方法 3: レポーター クラス
これらとともに TestNG レポート生成メソッドでは、object.properties ファイルを使用して、システム生成ログとユーザー生成ログを保存できます。ただし、テスト時にログ情報を保存する最も簡単な方法の 1 つは、 レポータークラス.
記者.ログイン Selenium に存在するクラスです TestNG の Selenium 報告。ログ情報を保存するための 4 つの異なる方法が提供されます。
- Reporter.log(文字列);
- Reporter.log(String s, Boolean logToStandardOut);
- Reporter.log(String s, int レベル);
- Reporter.log(String s, int level, Boolean logToStandardOut);
2番目の引数は、メッセージをレポートだけでなくコンソールにも出力するかどうかを決定し、level引数はメッセージの詳細度を制御します。
例::
DemoA と DemoB のような 2 つのクラスを作成し、クラス内に次のコードを記述します。
クラス DemoA の場合;
- その Code DemoAについては既に上記で説明済みです。ここでは、 Reporterクラスのlogメソッド。 (独自のレポートクラスを実装する場合、そのクラスはorg.testng.IReporterインターフェースを実装する必要があります。)
- log メソッドは Reporter クラスの静的メソッドです。 したがって、Reporter クラスを通じてそのメソッドにアクセスします。
- log メソッドは、プログラム内に書き込まれるログ情報を保存するために使用されます。 ログ情報を見ると、プログラムの実行が正確にどこで停止されたのかを簡単に知ることができます。
以下のスクリーンショットは、DemoAクラス内に配置されたReporter.logの呼び出しを示しています。
クラス DemoB の場合:
- さて、これら2つのクラスを選択してtestng.xmlファイルを作成し、
- 「次のユーザーとして実行」を選択し、
- 「testng に変換」をクリックします。
- 次に、[実行] を選択して testng スイートを選択し、この testng.xml ファイルを実行します。
- 次に、プロジェクトを更新して、テスト出力フォルダーを開きます。
- test-output フォルダーで、emailable-report.html を開きます。次のようになります。
同様に、デモ B プロジェクトの出力も作成されます。
- test-outputフォルダにあるindex.htmlを開いてください。以下のような内容が表示されます。
レポーター出力をクリックします。 テストメソッドに記述されたログ情報が開きます。
「タイムズ」をクリックします。を使用してクラス内に存在するテストメソッドを実行するのにどれくらいの時間がかかったかが表示されます。 TestNG レポートツール。
カスタマイズ方法 TestNG ITestListenerとIReporterを使用したレポート
上記の3つの方法は、 TestNG デフォルトでは生成されます。チームが別のレイアウト、追加のフィールド、またはライブ進捗ビューを必要とする場合は、 TestNG デフォルトのレポートを修正するように求めるのではなく、2つの拡張ポイントを公開します。
- ITestListenerComment 各テストの開始、合格、不合格、スキップのたびにリアルタイムで通知されます。イベント発生時に情報をキャプチャする必要がある場合(例えば、不合格時のスクリーンショットなど)にご利用ください。
- Iレポーター 各スイートの完了後に一度だけ通知され、実行全体を記述するオブジェクトを受け取ります。出力がPDFやカスタムHTMLページなどの完成ドキュメントである場合に使用してください。
各結果をReporterクラスを通してレポートに反映させるリスナーは次のようになります。
import org.testng.ITestListener; import org.testng.ITestResult; import org.testng.Reporter; public class ReportListener implements ITestListener { @Override public void onTestSuccess(ITestResult result) { Reporter.log("PASSED: " + result.getName(), true); } @Override public void onTestFailure(ITestResult result) { Reporter.log("FAILED: " + result.getName(), true); } @Override public void onTestSkipped(ITestResult result) { Reporter.log("SKIPPED: " + result.getName(), true); } }
リスナーの登録は、DemoAとDemoB用に既に作成したtestng.xmlスイートファイル内で行います。
<suite name="Demo Suite"> <listeners> <listener class-name="ReportListener" /> </listeners> <test name="Demo Test"> <classes> <class name="DemoA" /> <class name="DemoB" /> </classes> </test> </suite>
実験中に知っておくと便利なコマンドラインスイッチが2つあります。 -d このオプションはレポートが書き込まれるディレクトリを変更し、 -usedefaultlisteners false 組み込みレポーターをオフにして、独自のリスナーのみを実行します。どちらも公式ドキュメントに記載されています。 TestNG ログ記録と結果の文書化また、組み込みの XML レポーターが受け入れるプロパティについても記載されています。
リスナーは一度登録するとスイート内のすべてのクラスに適用されます。そのため、大規模なチームでは 自動化テスト テストスイートは通常、各テストメソッドにログ行を手動で追加するよりも、この方法を好みます。
TestNG デフォルトレポート vs エクステントレポート vs アリュール
デフォルトのレポートは小規模なスイートには十分ですが、履歴やグラフは含まれていません。スイートが大きくなると、2 つのオープンソースライブラリが一般的に追加され、どちらも TestNG.
| 機能 | TestNG デフォルト | エクステントレポート | アリュールレポート |
| セットアップの手間 | なし — 自動的に生成されます | ライブラリを追加し、レポーターコードを記述します。 | アダプターを追加し、結果からレポートを生成します。 |
| チャートとダッシュボード | いいえ | はい | はい |
| スクリーンショット | Reporter.logのマークアップのみ | 組み込みの添付ファイルAPI | 組み込みの添付ファイルAPI |
| 実行履歴と傾向 | いいえ | オプションのサーバーコンポーネントを介して | はい、保存された過去の結果から |
| フレームワークの適用範囲 | TestNG の | Java および.NET | フレームワークに依存しない |
スイートが小さい間は、デフォルトのレポートから始めましょう。 エクステントレポート 利害関係者が読みやすいダッシュボードを要求し、 アリュールレポート ビルド全体にわたる不安定なテスト履歴が重要な問題となる場合。どちらを選択しても、レポートは通常ビルドジョブによって公開され、これについては Jenkins 継続的インテグレーション チュートリアル。












