TestNG レポートの生成 Selenium: 生成方法は?

⚡ スマートサマリー

TestNG レポートはデフォルトの HTML 結果ファイルです。 TestNG 実行後、テスト出力フォルダに、合格、失敗、スキップされたテストケースと、レポーターのログを書き込みます。

  • 🔘 デフォルトの出力: あらゆる TestNG runコマンドは、追加のコードなしでtest-outputフォルダを作成します。
  • ☑️ 2つのHTMLビュー: emailable-report.html には結果の概要が表示され、index.html には詳細ビューへのリンクがあります。
  • ✅ 記者のログ: Reporter.log() は、カスタムメッセージを生成されたレポートに直接書き込みます。
  • 🧪 スイートの実行: testng.xmlを実行すると、複数のクラスが1つの統合レポートにまとめられます。
  • 🛠️ カスタマイズ: ITestListenerとIReporterを使用すると、チームが独自のレポート形式を作成できます。
  • 📊 デフォルト設定を超えて: ExtentReportsとAllureは、グラフ、履歴、スクリーンショットの添付ファイルを追加します。

TestNG レポート生成 Selenium

何ですか 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

  1. 「emailable-report.html」オプションをクリックします。
  2. オプションのWebブラウザをクリックします

以下のスクリーンショットは、test-outputフォルダからemailable-report.htmlファイルを開いた状態を示しています。

emailable-report.html を内部で選択すると、 TestNG テスト出力フォルダ

出力レポートは次のとおりです。 TestNG 両方のクラスが渡された場合、レポートは次のようになります。

TestNG DemoAとDemoBのテストクラスが合格したことを示すメール送信可能なレポート

DemoBクラスなどのテストケースを意図的に失敗させるシナリオを考えてみましょう。次に、両方のクラスをtestng.xmlスイートファイルに変換して実行します。結果は次のようになります。 失敗したテストケース.

これは DemoB クラスの結果です。

意図的に失敗したDemoBテストケースを強調したメール送信可能なレポート

同様に、クラス DemoA の結果は次のようになります。

DemoAクラス合格者向けのメール送信可能なレポート概要行

方法-2:index.html

  1. プロジェクト ディレクトリの Index.html を右クリックします。
  2. Web ブラウザで開くオプションを選択します。次の順序で結果が表示されます。

以下のスクリーンショットは、プロジェクトディレクトリからindex.htmlを開いた状態を示しています。

プロジェクトディレクトリからindex.htmlをWebブラウザで開く

結果は次のようになります。

TestNG index.html レポートランディングページ(実行結果ビュー一覧表示)

方法 3: レポーター クラス

これらとともに TestNG レポート生成メソッドでは、object.properties ファイルを使用して、システム生成ログとユーザー生成ログを保存できます。ただし、テスト時にログ情報を保存する最も簡単な方法の 1 つは、 レポータークラス.

記者.ログイン Selenium に存在するクラスです TestNG の Selenium 報告。ログ情報を保存するための 4 つの異なる方法が提供されます。

  1. Reporter.log(文字列);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, int レベル);
  4. 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の呼び出しを示しています。

DemoAテストクラス内に記述されたReporter.logステートメント

クラス DemoB の場合:

DemoBテストクラス内に記述されたReporter.logステートメント

  • さて、これら2つのクラスを選択してtestng.xmlファイルを作成し、
  • 「次のユーザーとして実行」を選択し、
  • 「testng に変換」をクリックします。
  • 次に、[実行] を選択して testng スイートを選択し、この testng.xml ファイルを実行します。
  • 次に、プロジェクトを更新して、テスト出力フォルダーを開きます。
  1. test-output フォルダーで、emailable-report.html を開きます。次のようになります。

    DemoAおよびDemoBのtestng.xmlスイートを実行した後に生成される、メール送信可能なレポート

    同様に、デモ B プロジェクトの出力も作成されます。

  2. test-outputフォルダにあるindex.htmlを開いてください。以下のような内容が表示されます。

    testng.xmlスイートの実行後に生成されたindex.htmlレポート

レポーター出力をクリックします。 テストメソッドに記述されたログ情報が開きます。

TestNG テストメソッドによってログに記録されたメッセージを一覧表示するレポーター出力ビュー

「タイムズ」をクリックします。を使用してクラス内に存在するテストメソッドを実行するのにどれくらいの時間がかかったかが表示されます。 TestNG レポートツール。

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 継続的インテグレーション チュートリアル。

よくあるご質問

フォルダは後から表示されます TestNG 実行が完了すると、IDE でプロジェクトが更新されます。空のフォルダは通常、クラスがプレーンな状態で起動されたことを意味します。 Java アプリケーションが動作していないか、デフォルトのリスナーが無効になっているため、レポーターが実行されませんでした。

Yes. TestNG デフォルトではtest-outputに出力されます。コマンドラインで-dオプションを指定するか、IDEの実行構成またはスイートを起動するMaven Surefireの設定で出力ディレクトリを設定してください。

onTestFailureなどのリスナーメソッド内で画像をキャプチャし、レポートと同じ場所に保存した後、Reporter.logを介してHTML画像タグを書き込みます。レポートはマークアップをレンダリングするため、失敗したメソッドの横に画像が表示されます。

TestNG それ自体はメールを送信しません。チームは通常、ビルドジョブから emailable-report.html を添付します。たとえば、 Jenkins ビルド後のメール送信ステップを追加するか、IReporterの実装内に小さなメール送信ルーチンを追加します。

AIモデルはスタックごとに障害をグループ化します。trac類似性に基づいて、真の欠陥を環境やタイミングの不具合から区別し、どの不具合のあるメソッドを優先的に検査すべきかを優先順位付けします。メール送信可能な長いレポートリストが、チームにとって優先順位付けされた短いキューに変わります。

GitHubコパイロット 短いコメントからリスナークラス、Reporter.logステートメント、testng.xmlエントリを生成できます。 Revすべての提案を確認してください。生成されたリスナーは、正確なインターフェースメソッドを見逃すことがよくあります。 TestNG 期待しています。

IRetryAnalyzer がアタッチされると、各再試行は最終結果とともに記録されます。そのため、デフォルトのレポートにはすべての試行が表示されるため、不安定なテストは同じ実行で失敗と成功の両方として表示される可能性があります。

コマンドラインで -usedefaultlisteners false を指定するか、Maven Surefire または Ant の設定で useDefaultListeners を false に設定してください。明示的に登録したレポーターのみが実行されるため、大規模なテストスイートの実行時間が短縮されます。