TestNG チュートリアル: アノテーションとフレームワークとは何ですか Selenium

何ですか TestNG?

TestNG NG は「Next Generation」を意味する自動テスト フレームワークです。 TestNG に触発され JUnit 注釈 (@) を使用します。 TestNG ~の欠点を克服します JUnit を作るように設計されています エンドツーエンドのテスト 簡単です。

使い方 TestNGを使用すると、適切なレポートを生成でき、合格したテスト ケースの数、失敗したテスト ケースの数、およびスキップされたテスト ケースの数を簡単に知ることができます。失敗したテスト ケースを個別に実行できます。

例:

  • 5 つのテスト ケースがあり、各テスト ケースに 1 つのメソッドが記述されているとします (プログラムは、メソッドを使用せずに main メソッドを使用して記述されていると仮定します)。 testNG)。このプログラムを最初に実行すると、3 つのメソッドが正常に実行され、4 番目のメソッドは失敗します。次に、4 番目のメソッドに存在するエラーを修正します。最初の 3 つのメソッドはいずれにせよ正常に実行されるため、今度は 4 番目のメソッドのみを実行します。これは使用しないと不可能です TestNG.
  •   TestNG in Selenium オプションを提供します。つまり、 testngtest-output フォルダー内の -failed.xml ファイル。失敗したテスト ケースのみを実行したい場合は、この XML ファイルを実行することになります。失敗したテスト ケースのみが実行されます。

上記のコンセプトに加えて、さらに詳しく学びます TestNG、の利点は何ですか? TestNG、@test アノテーションを使用してテスト メソッドを作成する方法、これらのクラスをテスト スイート ファイルに変換して実行する方法 eclipse コマンドラインからも同様に。

なぜ使うの? TestNG   Selenium?

デフォルト Selenium テストでは、テスト結果の適切な形式が生成されません。使用する TestNG in Selenium、テスト結果を生成できます。

ブリッジ Selenium ユーザーはこれを以上に使用します Junit その利点があるからです。非常に多くの機能があります TestNG, ただし、ここでは、で使用できる最も重要なものだけに焦点を当てます。 Selenium。 フォロwing の主な特徴は Selenium TestNG:

  • 実行されたテスト ケースの数、成功したテスト ケースの数、失敗したテスト ケースの数、スキップされたテスト ケースの数を含むレポートを適切な形式で生成します。
  • 複数のテスト ケースを次のように変換することで、より簡単にグループ化できます。 testng.xml ファイル。どのテストケースを最初に実行するか優先順位を付けることができます。
  • 「呼び出し回数」というキーワードを使うだけで、同じテストケースをループなしで複数回実行することができます。
  • 使い方 testng、複数のブラウザ上で複数のテスト ケースを実行できます。 ブラウザのテスト.
  •   TestNG フレームワークは次のようなツールと簡単に統合できます。 TestNG メイブン、ジェンキンスなど
  • テストで使用されるアノテーションは非常に理解しやすいです。例: @BeforeMethod、@AfterMethod、@BeforeTest、@AfterTest
  • WebDriver には、レポートを生成するためのネイティブ メカニズムがありません。 TestNG レポートを生成できます readable 以下のような形式になります。
  •   TestNG   Selenium

  • TestNG テストのコーディング方法が簡素化されます。テストでは静的 main メソッドはもう必要ありません。アクションのシーケンスは、メソッドが静的である必要がない、わかりやすいアノテーションによって制御されます。
  •   TestNG   Selenium

      TestNG   Selenium

  • キャッチされなかった例外は自動的に処理されます。 TestNG テストを途中で終了することなく。これらの例外は、レポートで失敗したステップとして報告されます。

のメリット TestNG が JUnit

大きなメリットは3つあります TestNG が JUnit:

  • 注釈がわかりやすくなりました
  • テストケースをより簡単にグループ化できる
  • 並行テストが可能

注釈とは TestNG?

の注釈 TestNG は、その下にあるメソッドの実行方法を制御できるコード行です。。これらの前には常に @ 記号が付きます。とても早くて素早い TestNG 以下にその例を示します。

注釈の入力 TestNG

注釈については議論される予定です later 「で使用される注釈」というセクション TestNG」なので、上記のことを理解していなくても大丈夫です。 TestNG 例はまだです。現時点では、注釈が次の点にあることに注意することが重要です。 TestNG よりもコード化と理解が容易です。 JUnit.

テストを並行して実行する機能は、 TestNG しかしではない JUnitので、 TestNG フレームワークは、テスターが使用する場合に適しています。 Selenium グリッド。

でテストケースを作成する方法 TestNG?

ステップ1) ビジネス ロジックを作成し、 TestNG コード内の注釈。
ステップ2) クラス名、グループ名、パッケージ名などの情報を追加します。
ステップ3) 実行する TestNG.

を使用してテスト ケースを作成する TestNG 注釈

ここで、次を使用して最初のテスト ケースを作成する方法を学びます。 TestNG の注釈 Selenium:

テスト ケースを作成する前に、まず新しいテスト ケースをセットアップする必要があります。 TestNG プロジェクトイン Eclipse 「First」という名前を付けますTestNGプロジェクト"。

新しい TestNG プロジェクト

ステップ1: [ファイル] > [新規作成] > をクリックします。 Java プロジェクト

新しい TestNG プロジェクト

ステップ2: 「最初」と入力しますTestNGプロジェクト名として「Project」を入力し、「次へ」をクリックします。

新しい TestNG プロジェクト

ステップ3: これからインポートを開始します TestNG 私たちのプロジェクトにライブラリを追加します。 「ライブラリ」タブをクリックし、「ライブラリを追加…」をクリックします。

新しい TestNG プロジェクト

ステップ4: [ライブラリの追加]ダイアログで、[TestNG」をクリックし、[次へ]をクリックします。

新しい TestNG プロジェクト

ステップ5: 完了をクリックします。

新しい TestNG プロジェクト

あなたはそれに気付くはずです TestNG ライブラリリストに含まれています。

新しい TestNG プロジェクト

ステップ6: 次に、以下を含む JAR ファイルを追加します。 Selenium API。これらのファイルは、からダウンロードした Java クライアント ドライバーにあります。 https://www.selenium.dev/downloads/ 私たちがインストールしていたとき Selenium および Eclipse 前の章で。

新しい TestNG プロジェクト

次に、 Selenium JAR ファイル。

新しい TestNG プロジェクト

外部 JAR を追加すると、画面は次のようになります。

新しい TestNG プロジェクト

ステップ7: [完了] をクリックして、最初のメッセージが表示されていることを確認します。TestNGプロジェクトは次の場所に表示されます Eclipseのパッケージ エクスプローラー ウィンドウ。

新しい TestNG プロジェクト

新規作成方法 TestNG テストファイル

これでプロジェクトの設定が完了しました TestNG チュートリアル、新しいものを作成しましょう TestNG ファイルにソフトウェアを指定する必要があります。

ステップ1: 「src」をクリックし、「その他」を選択します。
「src」パッケージ フォルダーを右クリックし、[新規] > [その他…] を選択します。

新しいを作成します TestNG テストファイル

ステップ2: 選択 TestNG とに提供されます。
セットアップボタンをクリックすると、セットアップが開始されます TestNG フォルダーを選択し、「TestNG クラス」オプション。 「次へ」をクリックします。

新しいを作成します TestNG テストファイル

ステップ3: 値を入力します。
以下に示す値を適切な入力に入力します。 box「es」を選択し、「完了」をクリックします。 Java ファイルに「First」という名前を付けていることに注意してください。TestNGファイル"。

新しいを作成します TestNG テストファイル

ステップ4: テンプレートが作成されました。
Eclipse テンプレートを自動的に作成する必要があります TestNG 以下に示すファイル。

新しいを作成します TestNG テストファイル

初めてのコーディング TestNG テストケースの例

それでは最初のものを作成してみましょう テストケース マーキュリーツアーズのホームページが正しいかどうかを確認します。以下に示すようにコードを入力します TestNG 例:

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

以下に注目してくださいwing.

  • TestNG main() メソッドを使用する必要はありません。
  • メソッドは静的である必要はありません。
  • @Test アノテーションを使用しました。 @Test は、その下のメソッドがテスト ケースであることを示すために使用されます。。 この場合、verifyHomepageTitle() メソッドをテスト ケースとして設定したため、その上に「@Test」アノテーションを配置しました。
  • アノテーションを使用するので、 TestNG、パッケージ組織をインポートする必要がありました。testng.注釈.*。
  • Assert クラスを使用しました。 Assert クラスは検証を行うために使用されます operaのイオン TestNG。これを使用するには、組織をインポートする必要があります。testng.Assert パッケージ。

1 つの中に複数のテスト ケース (したがって、複数の @Test アノテーション) が含まれる場合があります。 TestNG ファイル。これについてはさらに詳しく取り上げます later セクション「で使用される注釈」 TestNGに設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」

テストの実行

テストを実行するには、単にファイルを実行します。 Eclipse いつものように。 Eclipse 2 つの出力が提供されます。1 つはコンソール ウィンドウに、もう 1 つはコンソール ウィンドウに表示されます。 TestNG 結果ウィンドウ。

テストの実行

テストの実行

作成したレポートを確認する TestNG

コンソールウィンドウ Eclipse テストケース結果のテキストベースのレポートを提供します。 TestNG 結果ウィンドウにはグラフィカルな結果が表示されます。

作成したレポートを確認する TestNG

HTMLレポートの生成

TestNG HTML 形式でレポートを生成する機能があります。

ステップ1: 最初の実行後TestNG前のセクションで作成したファイルのプロジェクト名を右クリックします (最初のセクションTestNGプロジェクト) をプロジェクト エクスプローラー ウィンドウで表示し、[更新] オプションをクリックします。

HTMLレポートの生成

ステップ2: 「test-output」フォルダーが作成されたことに注目してください。 それを展開して、index.html ファイルを探します。 この HTML ファイルは、最新のテスト実行の結果のレポートです。

HTMLレポートの生成

ステップ3: Double-index.html ファイルをクリックしてファイル内で開きます Eclipseの内蔵 Web ブラウザ。通常の Web ブラウザと同様に、F5 キーを押すだけで、テストを再実行した後いつでもこのページを更新できます。

HTMLレポートの生成

で使用される注釈 TestNG

前のセクションでは、@Test アノテーションについて説明しました。 ここでは、より高度なアノテーションとその使用法を学習していきます。

複数のテストケース

単一の @Test アノテーションを複数使用できます。 TestNG ファイル。デフォルトでは、@Test アノテーションが付けられたメソッドはアルファベット順に実行されます。以下のコードを参照してください。メソッド c_test、a_test、および b_test はコード内でアルファベット順に配置されていませんが、そのまま実行されます。

で使用される注釈 TestNG

このコードを実行し、生成されたindex.htmlページで「時系列ビュー」をクリックします。

で使用される注釈 TestNG

計測パラメータ

メソッドを別の順序で実行したい場合は、パラメータ「priority」を使用します。 パラメータは、アノテーションの機能を変更するキーワードです.

  • パラメータには値を割り当てる必要があります。 これを行うには、その横に「=」を配置し、その後に値を続けます。
  • パラメータは、以下に示すコード スニペットのように、注釈の直後に配置される一対のかっこで囲まれています。

計測パラメータ

TestNG @Test アノテーションは、最も低い優先順位値から最大の優先順位値までを使用して実行されます。優先順位の値が連続している必要はありません。

計測パラメータ

  TestNG HTML レポートは、優先度の昇順の値に基づいてメソッドが実行されたことを確認します。

計測パラメータ

複数のパラメーター

「優先度」とは別に、@Test には「alwaysRun」と呼ばれる別のパラメーターがあり、これは「true」または「false」のいずれかにのみ設定できます。 XNUMX つのアノテーションで XNUMX つ以上のパラメータを使用するには、パラメータをカンマで区切ります。 以下に示すようなものです。

@Test(priority = 0, alwaysRun = true)

複数のパラメーター

@BeforeTest と @AfterTest

@BeforeTest このアノテーションの下にあるメソッドが実行されます 最初のテストケースの前に、 TestNG file.
@アフターテスト このアノテーションの下にあるメソッドが実行されます すべてのテストケースの後、 TestNG ファイルが実行される.

以下のコードを考えてみましょう。

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

上記の表とコードで示されているロジックを適用すると、メソッドが実行される順序は次のように予測できます。

  • 1st – launchBrowser()
  • 2nd –verifyHomepageTitle()
  • 3rd – terminateBrowser()

注釈ブロックの配置は、実行される時系列順序に影響を与えることなく交換できます。。で理解しましょう TestNG 例として、コードが以下のようになるように注釈ブロックを再配置してみてください。

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

上記のコードを実行すると、

複数のパラメーター

@BeforeMethod と @AfterMethod

@BeforeMethod このアノテーションの下にあるメソッドが実行されます 各テストケースの各メソッドの前に.
@アフターメソッド このアノテーションの下にあるメソッドが実行されます 各テストケースの各メソッドの後に。

Mercury Tours で、以下の XNUMX つのリンクのターゲット ページのタイトルを確認したいとします。

複数のパラメーター

テストの流れは次のようになります。

  • ホームページにアクセスしてタイトルを確認します。
  • 「登録」をクリックし、対象ページのタイトルを確認します。
  • ホームページに戻って、タイトルが正しいかどうかを確認します。
  • 「サポート」をクリックし、対象ページのタイトルを確認します。
  • ホームページに戻って、タイトルが正しいかどうかを確認します。

以下のコードは、@BeforeMethod と @AfterMethod を使用して上記のシナリオを効率的に実行する方法を示しています。

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

このテストを実行すると、 TestNG 次のことを報告する必要がありますwing シーケンス。

複数のパラメーター

簡単に言うと、@BeforeMethod には実行する必要があるメソッドが含まれている必要があります。 @AfterMethod には各テスト ケースに実行する必要があるメソッドが含まれている必要があります After それぞれのテストケース。

の概要 TestNG 注釈

@BeforeSuite: アノテーション付きメソッドは、このスイート内のすべてのテストが実行される前に実行されます。

@アフタースイート: アノテーション付きメソッドは、このスイート内のすべてのテストが実行された後に実行されます。

@BeforeTest: アノテーション付きメソッドは、タグ内のクラスに属するテスト メソッドが実行される前に実行されます。

@アフターテスト: アノテーション付きメソッドは、タグ内のクラスに属するすべてのテスト メソッドが実行された後に実行されます。

@BeforeGroups: この構成メソッドが前に実行されるグループのリスト。 このメソッドは、これらのグループのいずれかに属する最初のテスト メソッドが呼び出される直前に実行されることが保証されています。

@アフターグループ: この構成メソッドが実行されるグループのリスト。 このメソッドは、これらのグループのいずれかに属する最後のテスト メソッドが呼び出された直後に実行されることが保証されます。

@BeforeClass: アノテーション付きメソッドは、現在のクラスの最初のテスト メソッドが呼び出される前に実行されます。

@放課後: アノテーション付きメソッドは、現在のクラスのすべてのテスト メソッドが実行された後に実行されます。

@BeforeMethod: アノテーション付きメソッドは、各テスト メソッドの前に実行されます。

@アフターメソッド: アノテーションが付けられたメソッドは、各テスト メソッドの後に実行されます。

@テスト: アノテーションが付けられたメソッドはテスト ケースの一部です

まとめ

  • TestNG   テスト を実現できるフレームワーク Selenium テストがより理解しやすくなり、理解しやすいレポートが生成されます。
  • の主な利点 TestNG が JUnit フォローしていますwing.
    • 注釈は使いやすく、理解しやすくなります。
    • テスト ケースをより簡単にグループ化できます。
    • TestNG 作成できるようになります 並列テスト.
  • コンソールウィンドウ Eclipse テキストベースの結果を生成しますが、 TestNG ウィンドウは、テスト結果とその他の意味のある情報のグラフィック出力を提供するため、より便利です。tails といった:
    • 各メソッドの実行時間。
    • メソッドが実行された時系列順序
  • TestNG HTML ベースのレポートを生成できます。
  • アノテーションでは通常の Java と同じようにパラメータを使用できます。 TestNG 方法。
  • TestNG データプロバイダーは、1 回の実行でテスト ケースに異なる値を渡すテスト関数にパラメーターを渡す方法です。