テストグループ – 含める/除外する (例)

TestNG は、単体テスト、機能テスト、エンドツーエンド テスト、UI テスト、統合テストなど、さまざまなタイプのテスト設計をカバーするテスト フレームワークです。

XML を作成し、Maven を通じて実行することで、単一または複数のパッケージ (ここでのパッケージとは、クラスのグループを適切なディレクター形式でカプセル化することを意味します) を実行できます。

TestNG グループと例

グループを使用します テスト いつ、

  • (機能に応じて) 異なるクラスでテスト メソッドを個別に定義したくありません。
  • 同時に、一部のテスト ケースを、コード内に存在しないかのように無視 (実行しない) したいと考えています。
  • そのため、これを実行するには、それらをグループ化する必要があります。これは、testNG でサポートされている「include」および「exclude」メカニズムを使用して行われます。

以下の例では、XML ファイルでグループを使用する方法の構文を示しています。

@Test (groups = { "bonding", "strong_ties" })

ここでは、「bonding」と「strong_ties」という 2 つのグループ名を使用しています (これらは必要に応じて変更できる論理名です)。

<groups> タグは、XML でグループの開始を定義します。

XML をカスタマイズして、テスト クラスから言及されたグループを選択します。 以下に、XML ファイルでグループを宣言する方法の構文を示します。

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

したがって、クラスに 10 個のテスト メソッドがあると仮定します。

それらのうち、

  • 6 つのメソッドが「結合」グループにタグ付けされており、
  • 4人は「strong_ties」グループに属しています

今後は、maven/を設定します。Java パスと使用 Eclipse XML ファイルを使用してグループの使用法をデモするための IDE Java ベースの Maven プロジェクト。

XML を作成する TestNG タグ付き

  • Maven フレームワークの XML (Extensible Markup Language) ファイルには、XNUMX つ以上のテストの情報が含まれており、 鬼ごっこ.
  • XML のテスト情報は次のように表現されます。 鬼ごっこ 1 つ以上を含めることができます TestNG クラス。
  • A Java 含むクラス @テスト テストメソッドの上のアノテーションは次のように定義されます TestNG 方法。

複数のタグを順番に使用して、次のようなtestNG xmlを構築します。 、そして

  • まずタグは、実行レポートを生成するために報告される te​​stNG への完全な情報を定義する論理名を保持します。
  • 99つ目は、これは、合格、失敗、テスト ケースのスキップなどのテスト実行レポートの情報や、実行の合計時間やグループ情報などのその他の情報を保持する論理名であることに注意してください。
  • XNUMXつ目はcom.group.guru99.TC_Class1” />、使用するパッケージはcom.group.guru99、テストクラス名はTC_Class1です。
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

この XML は、以下のセクションで説明する今後のビデオに使用します。

テスト XML での「除外」または「含める」

グループ メカニズムの使用が複雑だと感じている場合は、testNG XML によってテストを除外/含める機能が利用しやすくなります。

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

ご注意: 複数のテスト ケースを一度に含めたり除外したりできます。これはグループでも機能します。

ラン TestNG コードのグループ化、包含、除外 (ビデオデモ)

の説明 Java コードとXML グループ化、除外および包含 XML のタグ。

テストシナリオ: Guru99 デモ バンキング サイトを起動し、ログイン ページでいくつかのことを確認し、資格情報を入力して、ログイン時にアプリケーションでいくつかの新しいことを再確認します。

ラン TestNG コードのグループ化、包含、除外

ご注意: コードを作成する各ステップは個別のメソッドで宣言する必要がありますが、実行時には XML ファイル内のエントリに応じてテスト メソッドが実行されます。

  • 方法1: ブラウザの初期化とURLの起動(tc01LaunchURL())
  • 方法2: ログインページの見出しの確認 (tc02VerifyLaunchPage())
  • 方法3: ログインフォームにユーザー名とパスワードを入力します (tc03EnterCredentials())
  • 方法4: ユーザー ダッシュボードでマネージャー ID の存在を確認します (tc04VerifyLoggedInPage())
  • 方法5: ユーザー ダッシュボードでさらにいくつかのリンクを確認します (tc05VerifyHyperlinks())

シナリオのコード:

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.Assert;	
import org.testng.annotations.Test;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("http://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void 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();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

注意: 資格情報は 20 日間のみ有効であるため、ローカル マシンでコードを実行しようとすると、資格情報が無効であるというエラーが発生する可能性があります。

コードの説明:

上で述べたように、各アクションを独立したメソッドで実行するための 5 つのテスト ケースを作成しました。

すべてのメソッドについて、グループ パラメーターを何らかの値に関連付けました。

基本的に、これらは「strong_ties」と「bonding」といった差別化グループの名前です。

  • 1番目と3番目の方法は「結合」、「強い結びつき」のタグが付けられており、グループのいずれかでXMLが更新された場合、 テストケース 走ります。
  • XNUMX 番目のメソッドは「ボンディング」グループにのみタグ付けされており、XML がボンディング グループで更新されることを意味します。 その場合にのみ、このテスト ケースが実行されます。
  • 4 番目のテスト ケースは strong_ties グループにタグ付けされています。つまり、このテスト ケースは、XML が strong_ties グループ名で更新された場合にのみ実行されます。
  • 最後の XNUMX 番目のテスト ケースはボンディング グループにアタッチされています。つまり、このテスト ケースは、XML がボンディング グループ名で更新された場合にのみ実行されます。

つまり、全体として 4 つのシナリオがあります。

シナリオ1: グループ名に関係なく、すべてのテスト ケースを実行したいと考えています。 この場合、実行中の XML から Group タグを削除します。

シナリオ2: いずれかのグループ、つまり strong_ties または bonding にのみ関連するテストをいくつか実行します。以下を参照してください。

  • このビデオでは、グループ パラメーターが XML の実行からコメント化されています。 したがって、すべてのテスト ケースが実行されたことがわかります。
  • ビデオの続きとして、XML にグループ名を含めました。そのグループに固有のテスト ケースのみが実行されていることがわかります。

シナリオ3: Exclude メカニズムを使用してテスト ケースを除外しています。 ビデオを参照してください

  • 実行中の XML に名前を書き込むことで、少数のテスト ケース (tc02) を除外していることがわかります。 最終結果では、前述のテスト ケースは実行されませんでした。

シナリオ4: 最後に、インクルード テスト メカニズムを使用してテスト ケース (tc01LaunchURL、tc03EnterCredentials、および tc05VerifyHyperlinks) をインクルードします。 ビデオを参照してください

このビデオでは、XML で記述されているテスト ケースがテスト実行中にのみ実行されることがわかります。

上記の例のコードからコードをダウンロードしてください。

上記のコードをダウンロードしてください

まとめ

ここでは、Maven プロジェクトで XML を使用してテスト ケースを実行する比較的新しい方法を学びました。

まず、testNG について簡単に紹介し、続いてグループ、除外、包含の完全な技術仕様について説明しました。