Er zijn twee belangrijke luisteraars.
- Luisteraars van WebDriver
- TestNG-luisteraars
In deze tutorial bespreken we over Testng Listeners. Hier is wat je zult leren-
- Wat zijn luisteraars in TestNG?
- Soorten luisteraars in TestNG
- Testscenario:
- Stappen om een TestNG-luisteraar te maken
- Gebruik van Listener voor meerdere klassen.
Wat zijn luisteraars in TestNG?
Listener wordt gedefinieerd als een interface die het standaardgedrag van TestNG wijzigt. Zoals de naam suggereert "luisteren" luisteraars naar de gebeurtenis die in het seleniumscript is gedefinieerd en gedragen zich dienovereenkomstig. Het wordt gebruikt in selenium door Listeners Interface te implementeren. Hiermee kunt u TestNG-rapporten of -logboeken aanpassen. Er zijn veel soorten TestNG-luisteraars beschikbaar.
Soorten luisteraars in TestNG
Er zijn veel soorten luisteraars waarmee u het gedrag van de TestNG kunt veranderen.
Hieronder staan de paar TestNG-luisteraars:
- IAnnotationTransformator,
- IAnnotationTransformer2,
- IConfigureerbaar,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
Bovenstaande interface worden TestNG-luisteraars genoemd. Deze interfaces worden gebruikt in selenium om logboeken te genereren of de TestNG-rapporten aan te passen.
In deze tutorial zullen we de ITestListener implementeren.
ITestListener heeft de volgende methoden
- OnStart - De OnStart-methode wordt aangeroepen wanneer een test start.
- onTestSuccess- de methode onTestSuccess wordt aangeroepen voor het succes van een test.
- onTestFailure- onTestFailure-methode wordt aangeroepen bij het mislukken van een test.
- onTestSkipped- onTestSkipped- methode wordt aangeroepen bij overgeslagen van een test.
- onTestFailedButWithinSuccessPercentage- methode wordt aangeroepen elke keer dat de test mislukt maar binnen het succespercentage valt.
- onFinish- onFinish-methode wordt aangeroepen nadat alle tests zijn uitgevoerd.
Testscenario:
In dit testscenario automatiseren we het inlogproces en implementeren we de 'ItestListener'.
- Start Firefox en open de site "http://demo.guru99.com/V4/"
- Log in op de applicatie.
Stappen om een TestNG-luisteraar te maken
Voor het bovenstaande testscenario zullen we Listener implementeren.
Stap 1) Maak de klasse "ListenerTest" die 'ITestListener' implementeert. Beweeg de muis over de redline-tekst en Eclipse zal u 2 snelle oplossingen voorstellen, zoals weergegeven in het onderstaande scherm:
Klik gewoon op "Niet-geïmplementeerde methoden toevoegen". Er worden meerdere niet-geïmplementeerde methoden (zonder hoofdtekst) aan de code toegevoegd. Kijk hieronder
pakket Listener_Demo;importeer org.testng.ITestContext;importeer org.testng.ITestListener;importeer org.testng.ITestResult;openbare klasse ListenerTest implementeert ITestListener@Overrideopenbare leegte onFinish (ITestContext arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare void onStart (ITestContext arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare ongeldige onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare ongeldigheid onTestFailure (ITestResult arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare ongeldigheid onTestSkipped (ITestResult arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare ongeldige onTestStart (ITestResult arg0) {// TODO Automatisch gegenereerde methodestub@Overrideopenbare ongeldigheid onTestSuccess (ITestResult arg0) {// TODO Automatisch gegenereerde methodestub
Laten we de klasse 'ListenerTest' aanpassen. In het bijzonder zullen we de volgende methoden wijzigen:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
De wijziging is eenvoudig. We drukken alleen de naam van de test af.
Logboeken worden gemaakt in de console. Het is gemakkelijk voor de gebruiker om te begrijpen welke test de status geslaagd, mislukt en overslaan is.
Na wijziging ziet de code eruit als-
pakket Listener_Demo;importeer org.testng.ITestContext;importeer org.testng.ITestListener;importeer org.testng.ITestResult;openbare klasse ListenerTest implementeert ITestListener@Overridepublic void onFinish (ITestContext Result)@Overridepublic void onStart (ITestContext Result)@Overridepublic void onTestFailedButWithinSuccessPercentage (ITestResult Result)// Als Testcase mislukt is, wordt deze methode aangeroepen.@Overridepublic void onTestFailure (ITestResult Result)System.out.println ("De naam van de testcase is mislukt is: + Result.getName ());// Wanneer Testcase wordt overgeslagen, wordt deze methode aangeroepen.@Overridepublic void onTestSkipped (ITestResult Result)System.out.println ("De naam van de overgeslagen testcase is: + Result.getName ());// Wanneer Testcase wordt gestart, wordt deze methode aangeroepen.@Overridepublic void onTestStart (ITestResult Result)System.out.println (Result.getName () + "testcase gestart");// Wanneer Testcase wordt gehaald, wordt deze methode aangeroepen.@Overridepublic void onTestSuccess (ITestResult Result)System.out.println ("De naam van de geslaagde testcase is: + Result.getName ());
Stap 2) Maak nog een klasse "TestCases" aan voor de automatisering van het inlogproces. Selenium zal deze 'TestCases' uitvoeren om automatisch in te loggen.
pakket Listener_Demo;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.testng.Assert;importeer org.testng.annotations.Listeners;Importeer org.testng.annotations.Test;openbare klasse TestCases {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();// Test om te slagen om luisteraars te verifiëren.@Testopenbaar ongeldig Inloggen ()driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("wachtwoord")). sendKeys ("amUpenu");driver.findElement (By.name ("btnLogin")). click ();// Deze test is met kracht mislukt om de luisteraar te verifiëren.@Testopenbare ongeldige TestToFail ()System.out.println ("Deze testmethode mislukt");Assert.assertTrue (false);
Stap 3) Implementeer vervolgens deze luisteraar in onze reguliere projectklasse, dwz "TestCases". Er zijn twee verschillende manieren om verbinding te maken met de klas en interface.
De eerste manier is om de annotatie van Listeners (@Listeners) te gebruiken, zoals hieronder wordt weergegeven:
@Listeners (Listener_Demo.ListenerTest.class)
We gebruiken dit in de klasse "TestCases" zoals hieronder weergegeven.
Dus eindelijk ziet de klasse "TestCases" eruit na het gebruik van Listener-annotatie:
pakket Listener_Demo;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.testng.Assert;importeer org.testng.annotations.Listeners;importeer org.testng.annotations.Test;@Listeners (Listener_Demo.ListenerTest.class)openbare klasse TestCases {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();// Test om te slagen om luisteraars te verifiëren.@Testopenbaar ongeldig Inloggen ()driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("wachtwoord")). sendKeys ("amUpenu");driver.findElement (By.id ("")). click ();// Deze test is met geweld mislukt als luisteraar.@Testopenbare ongeldige TestToFail ()System.out.println ("Deze testmethode mislukt");Assert.assertTrue (false);
De projectstructuur ziet er als volgt uit:
Stap 4): Voer de klasse "TestCases" uit. Methoden in de klasse "ListenerTest" worden automatisch aangeroepen volgens het gedrag van methoden die zijn geannoteerd als @Test.
Stap 5): Controleer de uitvoer die wordt weergegeven op de console.
De output van de 'TestCases' ziet er als volgt uit:
[TestNG] Actief:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-Customuite.xmlLogin Test Case gestartDe naam van de geslaagde testcase is: LoginTestToFail-testcase gestartDeze methode om te testen misluktDe naam van de mislukte testcase is: TestToFailGESLAAGD: LoginMISLUKT: TestToFailjava.lang.AssertionError: verwacht [true] maar gevonden [false]
Gebruik van Listener voor meerdere klassen.
Als het project meerdere klassen heeft, kan het toevoegen van luisteraars aan elk ervan omslachtig en foutgevoelig zijn.
In dergelijke gevallen kunnen we een testng.xml maken en listeners-tag in XML toevoegen.
Deze listener wordt overal in de testsuite geïmplementeerd, ongeacht het aantal klassen dat u heeft. Wanneer u dit XML-bestand uitvoert, werken luisteraars met alle genoemde klassen. U kunt ook een willekeurig aantal listenerklassen declareren.
Overzicht:
Luisteraars moeten logboeken genereren of TestNG-rapporten aanpassen in Selenium Webdriver.
- Er zijn veel soorten luisteraars en deze kunnen worden gebruikt volgens de vereisten.
- Luisteraars zijn interfaces die worden gebruikt in het script van het selenium-webstuurprogramma
- Demonstreerde het gebruik van Listener in Selenium
- De luisteraars geïmplementeerd voor meerdere klassen