TestNG Zuhörer rein Selenium
Es gibt zwei Hauptzuhörer.
- WebDriver-Listener
- TestNG Zuhörer
In diesem Tutorial werden wir darüber diskutieren Testng Zuhörer.
Was ist Zuhörer in? TestNG?
Der Listener ist als Schnittstelle definiert, die den Standard ändert TestNGs Verhalten. Wie der Name schon sagt, „hören“ Listener auf das im Selenium-Skript definierte Ereignis und verhalten sich entsprechend. Es wird in Selenium durch die Implementierung der Listeners-Schnittstelle verwendet. Es ermöglicht die Anpassung TestNG Berichte oder Protokolle. Es gibt viele Arten von TestNG Zuhörer vorhanden.
Arten von Zuhörern in TestNG
Es gibt viele Arten von Listenern, mit denen Sie die ändern können TestNGVerhalten.
Unten sind die wenigen TestNG Zuhörer:
- IAnnotationTransformer ,
- IAnnotationTransformer2 ,
- IKonfigurierbar,
- IConfigurationListener ,
- IExecutionListener,
- IHookable ,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- IMethodInterceptor ,
- IReporter,
- ISuiteListener,
- ITestListener .
Die oben genannten Schnittstellen werden aufgerufen TestNG Listener. Diese Schnittstellen werden in Selenium verwendet, um Protokolle zu generieren oder die TestNG Berichten.
In diesem Tutorial implementieren wir den ITestListener.
ITestListener hat folgende Methoden
- Am Start- Die OnStart-Methode wird aufgerufen, wenn ein Test startet.
- onTestSuccess- Die Methode onTestSuccess wird bei Erfolg eines Tests aufgerufen.
- onTestFailure- Die Methode onTestFailure wird beim Scheitern eines Tests aufgerufen.
- onTestSkipped- Die Methode onTestSkipped wird beim Überspringen eines Tests aufgerufen.
- onTestFailedButWithinSuccessPercentage- Die Methode wird jedes Mal aufgerufen, wenn der Test fehlschlägt, aber innerhalb des Erfolgsprozentsatzes liegt.
- onFinish- Die onFinish-Methode wird aufgerufen, nachdem alle Tests ausgeführt wurden.
Testszenario
In diesem Testszenario automatisieren wir den Anmeldevorgang und implementieren den „ItestListener“.
- Starten Sie die Firefox und öffnen Sie die Seite https://demo.guru99.com/V4/
- Melden Sie sich bei der Anwendung an.
Schritte zum Erstellen eines TestNG Hörer
Für das obige Testszenario implementieren wir Listener.
Schritt 1) Erstellen Sie die Klasse „ListenerTest“, die „ITestListener“ implementiert. Bewegen Sie die Maus über den Redline-Text und Eclipse schlägt Ihnen zwei schnelle Lösungen vor, wie im folgenden Bildschirm gezeigt:
Klicken Sie einfach auf „Nicht implementierte Methoden hinzufügen“. Dem Code werden mehrere nicht implementierte Methoden (ohne Text) hinzugefügt. Überprüfen Sie unten:
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 } }
Lassen Sie uns die Klasse „ListenerTest“ ändern. Insbesondere werden wir folgende Methoden ändern:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Die Änderung ist einfach. Wir drucken einfach den Namen des Tests aus.
Protokolle werden in der Konsole erstellt. Für den Benutzer ist es leicht zu verstehen, welcher Test den Status „Bestanden“, „Nicht bestanden“ und „Übersprungen“ hat.
Nach der Änderung sieht der Code so aus:
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()); } }
Schritt 2) Erstellen Sie eine weitere Klasse „TestCases“ für die Automatisierung des Anmeldevorgangs. Selenium führt diese „Testfälle“ aus, um sich automatisch anzumelden.
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("https://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); } }
Schritt 3) Als nächstes implementieren Sie diesen Listener in unserer regulären Projektklasse, also „TestCases“. Es gibt zwei verschiedene Möglichkeiten, eine Verbindung zur Klasse und Schnittstelle herzustellen.
Die erste Möglichkeit besteht darin, die Listeners-Annotation (@Listeners) zu verwenden, wie unten gezeigt:
@Listeners(Listener_Demo.ListenerTest.class)
Wir verwenden dies in der Klasse „TestCases“, wie unten gezeigt.
Schließlich sieht die Klasse „TestCases“ nach Verwendung der Listener-Annotation so aus:
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("https://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); } }
Die Projektstruktur sieht folgendermaßen aus:
Schritt 4): Führen Sie die Klasse „TestCases“ aus. Methoden in der Klasse „ListenerTest“ werden automatisch entsprechend dem Verhalten der als @Test annotierten Methoden aufgerufen.
Schritt 5): Überprüfen Sie die Ausgabe, die in der Konsole protokolliert wird.
Die Ausgabe der „Testfälle“ sieht folgendermaßen aus:
[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]
Verwendung von Listener für mehrere Klassen.
Wenn das Projekt über mehrere Klassen verfügt, kann das Hinzufügen von Listenern zu jeder einzelnen Klasse umständlich und fehleranfällig sein.
In solchen Fällen können wir eine Datei testng.xml erstellen und ein Listener-Tag in XML hinzufügen.
Dieser Listener wird in der gesamten Testsuite implementiert, unabhängig von der Anzahl Ihrer Klassen. Wenn Sie diese XML-Datei ausführen, funktionieren Listener für alle genannten Klassen. Sie können auch eine beliebige Anzahl von Listener-Klassen deklarieren.
Zusammenfassung
Listener sind erforderlich, um Protokolle zu generieren oder anzupassen TestNG Berichte in Selenium Webtreiber.
- Es gibt viele Arten von Zuhörern, die je nach Bedarf eingesetzt werden können.
- Listener sind Schnittstellen, die im Selenium-Webtreiberskript verwendet werden
- Demonstrierte die Verwendung von Listener in Selenium
- Die Listener wurden für mehrere Klassen implementiert