TestNG Lyssnare in Selenium: ITestListener & ITestResult Exempel
Det finns två huvudlyssnare.
- WebDriver-lyssnare
- TestNG lyssnare
I den här handledningen kommer vi att diskutera Testng Lyssnare.
Vad är lyssnare i TestNG?
Listener definieras som gränssnitt som ändrar standarden TestNGs beteende. Som namnet antyder Lyssnare "lyssnar" på händelsen som definieras i selenmanuset och beter sig därefter. Det används i selen genom att implementera Listeners Interface. Det tillåter anpassning TestNG rapporter eller loggar. Det finns många typer av TestNG lyssnare tillgängliga.
Typer av lyssnare i TestNG
Det finns många typer av lyssnare som låter dig ändra TestNGs beteende.
Nedan är några få TestNG lyssnare:
- IAnnotationTransformer,
- IAnnotationTransformer2 ,
- IKonfigurerbar,
- IConfigurationListener,
- IExecutionListener,
- Ikrokbar,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- ImethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
Gränssnittet ovan kallas TestNG Lyssnare. Dessa gränssnitt används i selen för att generera loggar eller anpassa TestNG rapporter.
I den här handledningen kommer vi att implementera ITestListener.
ITestListener har följande metoder
- OnStart- OnStart-metoden anropas när något test startar.
- onTestSuccess- onTestSuccess-metoden anropas på framgången för ett test.
- onTestFailure- onTestFailure-metoden anropas om ett test misslyckas.
- onTest Skipped- onTestSkipped-metoden anropas vid överhoppad test.
- onTestFailedButWithinSuccessPercentage- metod anropas varje gång Test misslyckas men ligger inom framgångsprocenten.
- på Finish- onFinish-metoden anropas efter att alla tester har utförts.
Testscenario
I detta testscenario kommer vi att automatisera inloggningsprocessen och implementera 'ItestListener'.
Steg för att skapa en TestNG Lyssnare
För ovanstående testscenario kommer vi att implementera Listener.
Steg 1) Skapa klassen "ListenerTest" som implementerar 'ITestListener'. Flytta musen över text med röd linje och Eclipse kommer att föreslå dig två snabba lösningar som visas på skärmen nedan:
Klicka bara på "Lägg till oimplementerade metoder". Flera oimplementerade metoder (utan en kropp) läggs till i koden. Kolla nedan-
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 } }
Låt oss ändra klassen 'ListenerTest'. I synnerhet kommer vi att modifiera följande metoder-
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Modifieringen är enkel. Vi skriver bara ut namnet på testet.
Loggar skapas i konsolen. Det är lätt för användaren att förstå vilket test som är godkänt, underkänd och hoppa över status.
Efter modifiering ser koden ut som-
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()); } }
Steg 2) Skapa en annan klass "TestCases" för automatisering av inloggningsprocessen. Selenium kommer att utföra detta 'TestCases' för att logga in automatiskt.
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); } }
Steg 3) Därefter implementerar du denna lyssnare i vår vanliga projektklass, dvs. "TestCases". Det finns två olika sätt att ansluta till klassen och gränssnittet.
Det första sättet är att använda Listeners-kommentarer (@Listeners) som visas nedan:
@Listeners(Listener_Demo.ListenerTest.class)
Vi använder detta i klassen "TestCases" som visas nedan.
Så äntligen ser klassen "TestCases" ut efter att ha använt Lyssnarannotering:
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); } }
Projektstrukturen ser ut som:
Steg 4): Kör klassen "TestCases". Metoder i klassen "ListenerTest" anropas automatiskt enligt beteendet hos metoder som är kommenterade som @Test.
Steg 5): Verifiera utdata som loggar visas på konsolen.
Utdata från 'TestCases' kommer att se ut så här:
[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]
Användning av Listener för flera klasser.
Om projektet har flera klasser kan det vara besvärligt och felbenäget att lägga till lyssnare till var och en av dem.
I sådana fall kan vi skapa en testng.xml och lägga till lyssnartagg i XML.
Den här lyssnaren implementeras i hela testsviten oavsett antalet klasser du har. När du kör den här XML-filen kommer lyssnare att fungera på alla nämnda klasser. Du kan också deklarera valfritt antal lyssnarklasser.
Sammanfattning
Lyssnare måste generera loggar eller anpassa TestNG rapporterar i Selenium Webdriver.
- Det finns många typer av lyssnare och kan användas enligt kraven.
- Lyssnare är gränssnitt som används i selenwebbdrivrutinskript
- Demonstrerade användningen av Listener i Selenium
- Implementerade lyssnarna för flera klasser