TestNG Ascultătorii în Selenium: Exemplu ITestListener și ITestResult
Sunt doi ascultători principali.
- WebDriver Ascultători
- TestNG ascultătorii
În acest tutorial, vom discuta despre Testng Ascultătorii.
În ce se află Ascultătorii TestNG?
Ascultătorul este definit ca interfață care modifică valoarea implicită TestNGcomportamentul lui. După cum sugerează și numele, Ascultătorii „ascultă” evenimentul definit în scriptul seleniu și se comportă în consecință. Este folosit în seleniu prin implementarea Listeners Interface. Permite personalizarea TestNG rapoarte sau jurnalele. Există multe tipuri de TestNG ascultători disponibili.
Tipuri de ascultători în TestNG
Există multe tipuri de ascultători care vă permit să schimbați TestNGcomportamentul lui.
Mai jos sunt câteva TestNG ascultători:
- IAnnotationTransformer ,
- IAnnotationTransformer2,
- IConfigurabil,
- IConfigurationListener ,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener ,
- IInvokedMethodListener2,
- IMethodInterceptor ,
- IReporter,
- ISuiteListener,
- ITestListener .
Mai sus sunt numite Interfața TestNG Ascultătorii. Aceste interfețe sunt folosite în seleniu pentru a genera jurnale sau pentru a personaliza TestNG rapoarte.
În acest tutorial, vom implementa ITestListener.
ITestListener are următoarele metode
- OnStart- Metoda OnStart este apelată când începe orice test.
- onTestSuccess- Metoda onTestSuccess este apelată la succesul oricărui Test.
- onTestFailure- Metoda onTestFailure este apelată la eșecul oricărui Test.
- onTestSkipped- Metoda onTestSkipped este apelată la ignorarea oricărui test.
- onTestFailedButWithinSuccessPercentage- metoda este apelată de fiecare dată când Testul eșuează, dar se află în procentul de succes.
- onFinish- Metoda onFinish este apelată după ce toate Testele sunt executate.
Scenariu de testare
În acest scenariu de testare, vom automatiza procesul de conectare și vom implementa „ItestListener”.
- Lansarea Firefox și deschide site-ul https://demo.guru99.com/V4/
- Conectați-vă la aplicație.
Pași pentru a crea un TestNG ascultător
Pentru scenariul de testare de mai sus, vom implementa Listener.
Pas 1) Creați clasa „ListenerTest” care implementează „ITestListener”. Deplasați mouse-ul peste text cu linia roșie și Eclipse vă va sugera 2 remedieri rapide, așa cum se arată în ecranul de mai jos:
Doar faceți clic pe „Adăugați metode neimplementate”. Mai multe metode neimplementate (fără corp) sunt adăugate la cod. Verifica mai jos-
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 } }
Să modificăm clasa „ListenerTest”. În special, vom modifica următoarele metode-
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Modificarea este simplă. Tipărim doar numele Testului.
Jurnalele sunt create în consolă. Este ușor pentru utilizator să înțeleagă ce test este o stare de trecere, de eșuare și de ignorare.
După modificare, codul arată ca...
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()); } }
Pas 2) Creați o altă clasă „TestCase” pentru automatizarea procesului de conectare. Selenium va executa aceste „Cazuri de testare” pentru a se autentifica automat.
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); } }
Pas 3) Apoi, implementați acest ascultător în clasa noastră obișnuită de proiect, adică „TestCases”. Există două moduri diferite de a vă conecta la clasă și la interfață.
Prima modalitate este să utilizați adnotarea Ascultătorilor (@Ascultători), după cum se arată mai jos:
@Listeners(Listener_Demo.ListenerTest.class)
Folosim acest lucru în clasa „Cazuri de testare”, așa cum se arată mai jos.
Deci, în sfârșit, clasa „TestCases” arată ca după utilizarea adnotării Listener:
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); } }
Structura proiectului arată astfel:
Pasul 4): Executați clasa „TestCases”. Metodele din clasa „ListenerTest” sunt apelate automat în funcție de comportamentul metodelor adnotate ca @Test.
Pasul 5): Verificați ieșirea care se înregistrează pe consolă.
Ieșirea „Cazurilor de testare” va arăta astfel:
[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]
Utilizarea Listener pentru mai multe clase.
Dacă proiectul are mai multe clase, adăugarea de ascultători la fiecare dintre ele ar putea fi greoaie și predispusă la erori.
În astfel de cazuri, putem crea un testng.xml și putem adăuga eticheta de ascultători în XML.
Acest ascultător este implementat în întreaga suită de testare, indiferent de numărul de clase pe care le aveți. Când rulați acest fișier XML, ascultătorii vor lucra la toate clasele menționate. De asemenea, puteți declara orice număr de clasă de ascultător.
Rezumat
Ascultătorii trebuie să genereze jurnalele sau să personalizeze TestNG raportează în Selenium Webdriver.
- Există multe tipuri de ascultători și pot fi utilizați conform cerințelor.
- Ascultătorii sunt interfețe utilizate în scriptul driverului web selenium
- A demonstrat utilizarea Listener în Selenium
- Am implementat Listeners pentru mai multe clase