のグループ TestNG
⚡ スマートサマリー
のグループ TestNG テストメソッドに論理ラベルを付けてタグ付けし、XMLスイートを介してそれらを含めるか除外することができます。このアプローチは、コードを書き直すことなく、スモークテスト、回帰テスト、および依存関係駆動型テストの実行を簡素化します。 Java コード。

TestNG は、単体テスト、機能テスト、エンドツーエンドテスト、UIテスト、統合テストを網羅するテストフレームワークです。 Java プロジェクト。
XMLスイートを作成し、Maven経由で実行することで、単一のパッケージまたは複数のパッケージ(パッケージは、定義されたディレクトリ構造内に関連するクラスをカプセル化したもの)を実行できます。
TestNG グループと例
グループを使用する TestNG いつ:
- 機能領域のみに基づいて多くのクラスにテストメソッドを分散させることは望ましくありません。
- 選択したテストケースを、コードベースに存在しないかのようにスキップ(実行しない)したい。
- 両方の目標を達成するために、メソッドを論理的なグループに分類します。 TestNG そして、XMLスイートで宣言された「include」フィルターと「exclude」フィルターを尊重します。
以下のコードスニペットは、テストメソッドで使用されるグループタグ付け構文を示しています。
ここでは2つのグループ名が使用されています。 bonding (NAIST) と strong_tiesこれらは論理的なラベルであり、プロジェクトに合わせて名前を変更できます。
その <groups> タグは、XML スイート内のグループフィルタの開始を示します。
次に、XMLをカスタマイズして、タグ付けされたクラスから選択したグループを選択します。以下の例は、グループ宣言の構文を示しています。
<ラン>
<include 名="ボンディング" />
</ラン>
</グループヘッド>
あるクラスに10個のテストメソッドが含まれていると仮定します。
これらの方法のうち:
- 6つの方法で
bondingグループ、そして - 4つの方法で
strong_tiesグループ。
次に、Maven をセットアップして Java パスと使用 Eclipse IDE は、XML ファイルを介してグループの使用を実証します。 Java-ベースのMavenプロジェクト。
XML を作成する TestNG タグ付き
- MavenフレームワークのXML(拡張マークアップ言語)ファイルには、1つ以上のテストの設定が格納され、 タグ。
- 各テストエントリは タグを1つ以上保持できます TestNG クラス。
- A Java 1つ以上のクラス @テスト メソッドの注釈は TestNG とに提供されます。
複数のタグが順番に現れて、動作する testng.xml ファイルを構築します。 、 、 そして。
- その タグには、スイートレベルの名前が保持されます。 TestNG 執行概要に関する報告書。
- その <test name=”Guru 99 スモークテストデモ”> タグには論理的なテスト名が格納されます。レポートでは、合格、不合格、スキップの件数、合計実行時間、およびグループメタデータにこのタグが使用されます。
- その タグはテストクラスを指し、
com.group.guru99パッケージとTC_Class1これはクラス名です。
<!DOCTYPE スイート SYSTEM 「http://testng.org/testng-1.0.dtd」>
<スイート 名="スイート">
<test 名= Guru 99 スモークテストデモ>
<グループヘッド>
<ラン>
<include 名=「強い絆」 />
</ラン>
</グループヘッド>
<クラス>
<class 名=「com.group.guru99.TC_Class1」 />
</クラス>
</test>
</スイート>
このXML設定は、次のセクションのビデオチュートリアルで参照されています。
テスト XML での「除外」または「含める」
グループメカニズムが小規模なフィルタには重すぎると感じる場合は、testng.xmlスイートでは、個々のテストメソッドを名前で除外または含めることもできます。
タグを含める: includeタグの構文include 名=「${TEST_CASE_NAME}」 />
注意: 1回の実行で複数のテストケースを含めたり除外したりすることができ、グループフィルターにも同じ構文が適用されます。
dependsOnGroups を使用した順序付き実行
単なる包含を超えて、 TestNG あるグループが別のグループに依存することを可能にする dependsOnGroups 属性。ランナーは、親グループ内のすべてのメソッドが依存メソッドの開始前に完了することを保証し、前提条件の信頼性を維持します。
- まずログインしてから、取引を行ってください。 タグログイン方法
group = "auth"、タグ転送テストdependsOnGroups = {"auth"}転送テストは、ログインが成功した後にのみ実行されます。 - 失敗時にスキップ: 親グループのメソッドが失敗した場合、 TestNG 依存するメソッドを完全に失敗させるのではなく、スキップされたものとしてマークすることで、レポートの正確性を維持します。
- alwaysRunと組み合わせる: クリーンアップ方法を設定する必要があります
alwaysRun = trueそのため、上流グループが失敗した場合でも、ティアダウン処理は実行されます。
このパターンは、APIの設定が完了してからUIのアサーションが開始される必要があるエンドツーエンドのスイートでよく見られるものです。
ラン TestNG コードのグループ化、包含、除外 (ビデオデモ)
以下はウォークスルーです Java コードと、それを駆動する XML スイート グループ化、除外、および含める 行動。
テストシナリオ: 起動する Guru99のデモ銀行サイトで、ログインページのいくつかの要素を確認し、認証情報を入力し、ログイン後にダッシュボードでいくつかの項目を再確認します。
注意: 各ステップはそれぞれ独自のメソッド内に存在しますが、実行時の順序はXMLスイート内のエントリによって決まります。
- 方法1: ブラウザを初期化して起動します URL (
tc01LaunchURL()). - 方法2: ログインページの見出しを確認してください(
tc02VerifyLaunchPage()). - 方法3: ログインフォームにユーザー名とパスワードを入力してください(
tc03EnterCredentials()). - 方法4: ユーザーダッシュボードにマネージャーIDが存在することを確認します(
tc04VerifyLoggedInPage()). - 方法5: ユーザーダッシュボードで追加のリンクを確認します(
tc05VerifyHyperlinks()).
Code シナリオの場合:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox です。Firefoxドライバ;
import org.testng.Assert;
import org.testng.annotations.Test;
パブリッククラス TC_Class1 {
パブリックスタティックファイナル webdriver ウェブドライバー = NEW Firefoxドライバ();
String launchPageHeading = “//h3[text()='Guru99バンク']”;
ファイナル String ユーザー名要素 = “//input[@name='uid']”、password_element = “//input[@name='password']”,
signIn_element = “//input[@name='btnLogin']”;
ファイナル String ユーザー名の値 = 「mngr28642」、password_value = 「ydAnate」;
ファイナル String マネージャーID = “//td[contains(text(),'Manger Id')]”;
ファイナル String 新規顧客 = “//a[@href='addcustomerpage.php']”、fundTransfer = “//a[@href='FundTransInput.php']”;
/** このテストケースはwebDriverを初期化します */
@テスト(グループヘッド = { "ボンディング", 「強い絆」 })
パブリックボイド tc01LaunchURL(){
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20、TimeUnit.SECONDS);
webDriver.get(「https://www.demo.guru99.com/V4/」);
}
/** ログインページに見出しが存在するかどうかを確認します */
@テスト(グループヘッド = { "ボンディング" })
パブリックボイド tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
「ホームページの見出しが表示されません」);
System.out.println(「ホームページの見出しが表示されます」);
}
/** ユーザー名とパスワードを入力し、サインインをクリックします */
@テスト(グループヘッド = { "ボンディング", 「強い絆」 })
パブリックボイド tc03EnterCredentials() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** ダッシュボード上のマネージャーIDを検証します */
@テスト(グループヘッド = { 「強い絆」 })
パブリックボイド tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
「管理者IDラベルが表示されません」);
System.out.println(「マネージャーIDラベルが表示されます」);
}
/** ダッシュボード上の新規顧客リンクと資金振替リンクを確認します */
@テスト(グループヘッド = { "ボンディング" })
パブリックボイド tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
「新規顧客向けハイパーリンクが表示されません」);
System.out.println(「新規顧客向けハイパーリンクが表示されます」);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
「資金移動のハイパーリンクが表示されません」);
System.out.println(「資金移動のハイパーリンクが表示されます」);
}
}
ご注意ください:デモ用の銀行口座情報は、約20日間有効です。そのため、有効期間が過ぎた後にローカル環境で実行すると、無効な認証情報エラーが表示される場合があります。
コードの説明:
5つのテスト方法(アクションごとに1つ)には、 groups の属性 @Test 注釈。
2つの論理グループラベルは次のとおりです。 strong_ties (NAIST) と bonding.
- 1番目と3番目の方法は両方とも
bonding(NAIST) とstrong_tiesそのため、どちらかのグループがスイートに含まれている場合はいつでも実行されます。これは共有の一般的なパターンです。 テストケース 手順。 - 2番目の方法は、
bondingそのため、bondingグループが含まれています。 - 4番目の方法は、
strong_tiesそのため、そのグループが含まれている場合にのみ実行されます。 - 5番目のメソッドには、
bondingそのため、bondingグループが含まれています。
以下に4つの実行シナリオを示します。
シナリオ1: グループに関係なく、すべてのテストメソッドを実行します。 <groups> 実行中のXMLからブロックします。
シナリオ2: 選択したグループに関連付けられたメソッドのみを実行します。 strong_ties or bonding下記の動画をご参照ください。
- ビデオの最初の部分では、
<groups>このブロックはコメントアウトされているため、すべてのテストメソッドが実行されます。 - 第2部では、グループフィルターが復元され、一致するメソッドのみが実行されます。
シナリオ3: 除外フィルターを適用して、選択したテストケースをスキップしてください。詳細は動画をご覧ください。
- デモには以下は含まれません
tc02実行中の XML 内の名前で除外され、結果レポートで除外されたメソッドが実行されないことが確認されます。
シナリオ4: 包含フィルターを適用して、 tc01LaunchURL, tc03EnterCredentials, tc05VerifyHyperlinks動画をご参照ください。
今回の実行では、インクルードフィルタにリストされているメソッドのみが、設定どおりに実行されます。
下記のリンクからサンプルプロジェクトをダウンロードしてください。
結論
のグループ TestNG 大規模な構造をもたらす Selenium また、単発的なクラス分割を宣言的なXMLフィルタに置き換えることで、ユニットスイートも管理します。
メソッドにタグを付けます @Test(groups = {...})、次に使用 <include>, <exclude>, dependsOnGroups 同じ Maven プロジェクトから煙、回帰、エンドツーエンドの実行を実行する TestNG 7.x。

