Es gibt zwei Haupthörer.
- WebDriver-Listener
- TestNG Listener
In diesem Tutorial werden wir uns mit Testng Listeners befassen. Folgendes werden Sie lernen:
- Was sind Listener in TestNG?
- Arten von Listenern in TestNG
- Testszenario:
- Schritte zum Erstellen eines TestNG-Listeners
- Verwendung von Listener für mehrere Klassen.
Was sind Listener in TestNG?
Listener ist als Schnittstelle definiert, die das Standardverhalten von TestNG ändert. Wie der Name schon sagt, "hören" Listener auf das im Selenium-Skript definierte Ereignis und verhalten sich entsprechend. Es wird in Selen durch Implementierung der Listener-Schnittstelle verwendet. Es ermöglicht das Anpassen von TestNG-Berichten oder -Protokollen. Es gibt viele Arten von TestNG-Listenern.
Arten von Listenern in TestNG
Es gibt viele Arten von Listenern, mit denen Sie das Verhalten des TestNG ändern können.
Nachfolgend sind die wenigen TestNG-Listener aufgeführt:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- IConfigurable,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
Die oben genannten Schnittstellen werden als TestNG-Listener bezeichnet. Diese Schnittstellen werden in Selen verwendet, um Protokolle zu erstellen oder die TestNG-Berichte anzupassen.
In diesem Tutorial implementieren wir den ITestListener.
ITestListener verfügt über folgende Methoden
- OnStart - Die OnStart-Methode wird aufgerufen, wenn ein Test gestartet wird.
- Die Methode onTestSuccess- onTestSuccess wird für den Erfolg eines Tests aufgerufen.
- Die Methode onTestFailure- onTestFailure wird aufgerufen, wenn ein Test fehlschlägt.
- Die Methode onTestSkipped- onTestSkipped wird aufgerufen, wenn ein Test übersprungen wird.
- Die onTestFailedButWithinSuccessPercentage- Methode wird jedes Mal aufgerufen, wenn der Test fehlschlägt, liegt jedoch innerhalb des prozentualen Erfolgs.
- Die Methode onFinish- onFinish wird aufgerufen, nachdem alle Tests ausgeführt wurden.
Testszenario:
In diesem Testszenario werden wir den Anmeldevorgang automatisieren und den 'ItestListener' implementieren.
- Starten Sie den Firefox und öffnen Sie die Site "http://demo.guru99.com/V4/".
- Melden Sie sich bei der Anwendung an.
Schritte zum Erstellen eines TestNG-Listeners
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 Schnellkorrekturen 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-
Paket Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;öffentliche Klasse ListenerTest implementiert ITestListener{@Overridepublic void onFinish (ITestContext arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onStart (ITestContext arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onTestFailure (ITestResult arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onTestSkipped (ITestResult arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onTestStart (ITestResult arg0) {// TODO Automatisch generierter Methodenstub}}@Overridepublic void onTestSuccess (ITestResult arg0) {// TODO Automatisch generierter Methodenstub}}}}
Lassen Sie uns die 'ListenerTest'-Klasse ändern. Insbesondere werden wir folgende Methoden modifizieren:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess usw.
Die Änderung ist einfach. Wir drucken nur den Namen des Tests.
Protokolle werden in der Konsole erstellt. Für den Benutzer ist es leicht zu verstehen, welcher Test ein Bestanden-, Nichtbestanden- und Überspringen-Status ist.
Nach der Änderung sieht der Code wie folgt aus:
Paket Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;öffentliche Klasse ListenerTest implementiert ITestListener{@Overridepublic void onFinish (ITestContext-Ergebnis){}}@Overridepublic void onStart (ITestContext-Ergebnis){}}@Overridepublic void onTestFailedButWithinSuccessPercentage (ITestResult-Ergebnis){}}// Wenn der Testfall fehlschlägt, wird diese Methode aufgerufen.@Overridepublic void onTestFailure (ITestResult-Ergebnis){System.out.println ("Der Name des fehlgeschlagenen Testfalls lautet: + Result.getName ());}}// Wenn der Testfall übersprungen wird, wird diese Methode aufgerufen.@Overridepublic void onTestSkipped (ITestResult-Ergebnis){System.out.println ("Der Name des übersprungenen Testfalls lautet: + Result.getName ());}}// Wenn der Testfall gestartet wird, wird diese Methode aufgerufen.@Overridepublic void onTestStart (ITestResult-Ergebnis){System.out.println (Result.getName () + "Testfall gestartet");}}// Wenn der Testfall bestanden wird, wird diese Methode aufgerufen.@Overridepublic void onTestSuccess (ITestResult-Ergebnis){System.out.println ("Der Name des übergebenen Testfalls lautet: + Result.getName ());}}}}
Schritt 2) Erstellen Sie eine weitere Klasse "TestCases" für die Automatisierung des Anmeldeprozesses. Selenium führt diese 'Testfälle' aus, um sich automatisch anzumelden.
Paket 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;TestCases der öffentlichen Klasse {WebDriver-Treiber = neuer FirefoxDriver ();// Test zum Bestehen, um die Listener zu verifizieren.@Prüfungpublic 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 ();}}// Dieser Test zur Überprüfung des Listeners wurde mit Nachdruck fehlgeschlagen.@Prüfungpublic void TestToFail (){System.out.println ("Diese Methode zum Testen schlägt fehl");Assert.assertTrue (false);}}}}
Schritt 3) Implementieren Sie als Nächstes diesen Listener in unserer regulären Projektklasse, dh "TestCases". Es gibt zwei verschiedene Möglichkeiten, eine Verbindung zur Klasse und zur Schnittstelle herzustellen.
Die erste Möglichkeit besteht darin, die Listeners-Annotation (@Listeners) wie unten gezeigt zu verwenden:
@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:
Paket 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)TestCases der öffentlichen Klasse {WebDriver-Treiber = neuer FirefoxDriver ();// Test zum Bestehen, um die Listener zu verifizieren.@Prüfungpublic 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 ();}}// Diesen Test als Listener verifizieren gewaltsam nicht bestanden.@Prüfungpublic void TestToFail (){System.out.println ("Diese Methode zum Testen schlägt fehl");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 von Methoden aufgerufen, die als @Test bezeichnet werden.
Schritt 5): Überprüfen Sie die Ausgabe, die die Protokolle an der Konsole anzeigen.
Die Ausgabe der 'TestCases' sieht folgendermaßen aus:
[TestNG] Laufen:C: \ Benutzer \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customuite.xmlAnmeldetestfall gestartetDer Name des bestandenen Testfalls lautet: LoginTestToFail-Testfall gestartetDiese Testmethode schlägt fehlDer Name des fehlgeschlagenen Testfalls lautet: TestToFailPASSED: LoginFEHLGESCHLAGEN: TestToFailjava.lang.AssertionError: erwartet [wahr] aber gefunden [falsch]
Verwendung von Listener für mehrere Klassen.
Wenn das Projekt mehrere Klassen hat, kann das Hinzufügen von Listenern zu jeder von ihnen umständlich und fehleranfällig sein.
In solchen Fällen können wir eine testng.xml erstellen und Listener-Tags in XML hinzufügen.
Dieser Listener ist in der gesamten Testsuite implementiert, unabhängig von der Anzahl Ihrer Klassen. Wenn Sie diese XML-Datei ausführen, arbeiten Listener mit allen genannten Klassen. Sie können auch eine beliebige Anzahl von Listener-Klassen deklarieren.
Zusammenfassung:
Listener müssen Protokolle erstellen oder TestNG-Berichte in Selenium Webdriver anpassen.
- Es gibt viele Arten von Hörern, die je nach Anforderung verwendet werden können.
- Listener sind Schnittstellen, die im Selenium-Webtreiberskript verwendet werden
- Demonstrierte die Verwendung von Listener in Selen
- Implementierte die Listener für mehrere Klassen