TestNG のリスナー Selenium: ITestListener と ITestResult の例


メインのリスナーは XNUMX 人います。

  1. WebDriver リスナー
  2. TestNG リスナー

このチュートリアルでは、次について説明します。 テスト リスナーの皆さん。

リスナーとは何ですか TestNG?

リスナーはデフォルトを変更するインターフェースとして定義されています TestNGの振る舞い。名前が示すように、リスナーはセレンスクリプトで定義されたイベントを「聞き」、それに応じて動作します。セレンではリスナーインターフェースを実装することで使用されます。これによりカスタマイズが可能になります。 TestNG レポートまたはログ。多くの種類があります TestNG リスナーが利用可能です。

のリスナー TestNG

リスナーの種類 TestNG

リスナーにはさまざまな種類があり、それらを変更することができます。 TestNGの行動。

以下にいくつかあります TestNG リスナー:

  1. IAnnotationTransformer 、
  2. IAnnotationTransformer2 、
  3. I構成可能、
  4. IConfigurationListener 、
  5. I実行リスナー、
  6. IHookable 、
  7. IInvokedMethodListener 、
  8. IInvokedMethodListener2 、
  9. IMethodInterceptor 、
  10. Iレポーター、
  11. ISuiteListener、
  12. ITestListener 。

上記のインターフェイスは呼び出されます TestNG リスナー。これらのインターフェースは、ログを生成したり、 TestNG レポート。

このチュートリアルでは、ITestListener を実装します。

ITestListenerには以下のメソッドがあります

  • 開始時- OnStart メソッドは、テストの開始時に呼び出されます。
  • テスト成功時- onTestSuccess メソッドは、テストが成功したときに呼び出されます。
  • テスト失敗時- onTestFailure メソッドは、テストが失敗したときに呼び出されます。
  • onテストスキップ- onTestSkipped メソッドは、テストがスキップされたときに呼び出されます。
  • テストは失敗したが成功以内の割合 - このメソッドは、テストが失敗しても成功率の範囲内であるたびに呼び出されます。
  • 終了時- onFinish メソッドは、すべてのテストが実行された後に呼び出されます。

テストシナリオ

このテスト シナリオでは、ログイン プロセスを自動化し、「ItestListener」を実装します。

  1. 起動する Firefox そしてサイトを開きます http://demo.guru99.com/V4/
  2. テストシナリオ

  3. アプリケーションにログインします。
  4. テストシナリオ

を作成する手順 TestNG リスナー

上記のテスト シナリオでは、リスナーを実装します。

ステップ1) 「ITestListener」を実装するクラス「ListenerTest」を作成します。マウスを朱書きテキストの上に移動し、 Eclipse 以下の画面に示すように、2 つの簡単な修正が提案されます。

を作成する手順 TestNG リスナー

「未実装メソッドを追加」をクリックするだけです。 複数の未実装メソッド (本体なし) がコードに追加されます。 以下をご確認ください -

package Listener_Demo;		

import org.testng.ITestContext ;		
import org.testng.ITestListener ;		
import org.testng.ITestResult ;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onStart(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailure(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSkipped(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestStart(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSuccess(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		
}		

「ListenerTest」クラスを変更してみましょう。特に、次のメソッドを変更します。

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

変更は簡単です。 テストの名前を出力するだけです。

ログはコンソールに作成されます。 ユーザーは、どのテストが合格、不合格、スキップのステータスであるかを簡単に理解できます。

変更後のコードは次のようになります。

package Listener_Demo;		

import org.testng.ITestContext;		
import org.testng.ITestListener;		
import org.testng.ITestResult;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext Result) 					
    {		
                		
    }		

    @Override		
    public void onStart(ITestContext Result)					
    {		
            		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult Result)					
    {		
    		
    }		

    // When Test case get failed, this method is called.		
    @Override		
    public void onTestFailure(ITestResult Result) 					
    {		
    System.out.println("The name of the testcase failed is :"+Result.getName());					
    }		

    // When Test case get Skipped, this method is called.		
    @Override		
    public void onTestSkipped(ITestResult Result)					
    {		
    System.out.println("The name of the testcase Skipped is :"+Result.getName());					
    }		

    // When Test case get Started, this method is called.		
    @Override		
    public void onTestStart(ITestResult Result)					
    {		
    System.out.println(Result.getName()+" test case started");					
    }		

    // When Test case get passed, this method is called.		
    @Override		
    public void onTestSuccess(ITestResult Result)					
    {		
    System.out.println("The name of the testcase passed is :"+Result.getName());					
    }		

}			

ステップ2) ログインプロセス自動化用に別のクラス「TestCases」を作成します。 Selenium この「TestCases」を実行して自動的にログインします。

package Listener_Demo;		

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

public class TestCases {				
WebDriver driver= new FirefoxDriver();					

// Test to pass as to verify listeners .		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.name("btnLogin")).click();					
}		

// Forcefully failed this test as to verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}

ステップ3) 次に、このリスナーを通常のプロジェクト クラス、つまり「TestCases」に実装します。 クラスとインターフェイスに接続するには XNUMX つの異なる方法があります。

XNUMX つ目の方法は、次に示すように Listeners アノテーション (@Listeners) を使用する方法です。

@Listeners(Listener_Demo.ListenerTest.class)

以下に示すように、これをクラス「TestCases」で使用します。

最後に、Listener アノテーションを使用した後のクラス「 TestCases 」は次のようになります。

package Listener_Demo;		

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

@Listeners(Listener_Demo.ListenerTest.class)			

public class TestCases {				
WebDriver driver= new FirefoxDriver();					

//Test to pass as to verify listeners.		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.id("")).click();					
}		

//Forcefully failed this test as verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}			

プロジェクトの構造は次のようになります。

を作成する手順 TestNG リスナー

ステップ4): 「TestCases」クラスを実行します。 クラス「ListenerTest」内のメソッドは、 @Test アノテーションが付けられたメソッドの動作に従って自動的に呼び出されます。

ステップ5): コンソールに表示されるログの出力を確認します。

「TestCases」の出力は次のようになります。

を作成する手順 TestNG リスナー

[TestNG] Running:		
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse--1058076918\testng-customsuite.xml		

Login Test Case started		
The name of the testcase passed is:Login		
TestToFail test case started		
This method to test fail		
The name of the testcase failed is:TestToFail		
PASSED: Login		
FAILED: TestToFail		
java.lang.AssertionError: expected [true] but found [false]

複数のクラスに対するリスナーの使用。

プロジェクトに複数のクラスがある場合、それぞれのクラスにリスナーを追加するのは面倒でエラーが発生しやすい可能性があります。

このような場合は、testng.xml を作成し、XML にリスナー タグを追加できます。

複数のクラスでのリスナーの使用

このリスナーは、クラスの数に関係なく、テスト スイート全体に実装されます。 この XML ファイルを実行すると、リスナーは前述のすべてのクラスで動作します。 任意の数のリスナー クラスを宣言することもできます。

まとめ

リスナーはログを生成するかカスタマイズする必要があります TestNG の報告 Selenium ウェブドライバー。

  • リスナーには多くの種類があり、要件に応じて使用できます。
  • リスナーは、Selenium Webドライバスクリプトで使用されるインターフェースです。
  • リスナーの使用をデモンストレーションしました Selenium
  • 複数のクラスのリスナーを実装しました