TestNG Slušatelji unutra Selenium
Dva su glavna slušatelja.
- WebDriver slušatelji
- TestNG slušatelji
U ovom vodiču raspravljat ćemo o Testng Slušatelji.
U čemu je Slušatelji TestNG?
Slušatelj je definiran kao sučelje koje mijenja zadane postavke TestNGponašanje. Kao što ime sugerira, slušatelji "slušaju" događaj definiran u selenium skripti i ponašaju se u skladu s tim. Koristi se u selenu implementacijom sučelja slušatelja. Omogućuje prilagodbu TestNG izvješća ili dnevnika. Postoje mnoge vrste TestNG dostupnih slušatelja.
Vrste slušatelja u TestNG
Postoje mnoge vrste slušatelja koji vam omogućuju promjenu TestNGponašanje.
Ispod je nekoliko TestNG slušatelji:
- IAnnotationTransformer ,
- IAnnotationTransformer2 ,
- Ikonfigurabilno,
- IConfigurationListener,
- IExecutionListener,
- Zakačiv ,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener .
Gornje sučelje se zove TestNG Slušatelji. Ta se sučelja koriste u selenu za generiranje zapisa ili prilagodbu TestNG hrturizam.hr
U ovom vodiču ćemo implementirati ITestListener.
ITestListener ima sljedeće metode
- OnStart- Metoda OnStart poziva se kada započne bilo koji test.
- onTestSuccess- onTestSuccess metoda se poziva na uspjeh bilo kojeg testa.
- onTestFailure- Metoda onTestFailure poziva se u slučaju neuspjeha bilo kojeg testa.
- onTestSkipped- onTestSkipped metoda se poziva kada se preskoči bilo koji test.
- onTestFailedButWithinSuccessPercentage- metoda se poziva svaki put kada Test ne uspije, ali je unutar postotka uspješnosti.
- onFinish- Metoda onFinish se poziva nakon što se izvrše svi testovi.
Testni scenarij
U ovom testnom scenariju automatizirat ćemo proces prijave i implementirati 'ItestListener'.
- Pokrenite Firefox i otvorite stranicu https://demo.guru99.com/V4/
- Prijavite se u aplikaciju.
Koraci za stvaranje a TestNG slušalac
Za gornji testni scenarij implementirat ćemo Slušatelj.
Korak 1) Napravite klasu "ListenerTest" koja implementira "ITestListener". Pomaknite miš preko crvenog teksta i Eclipse predložit će vam 2 brza rješenja kao što je prikazano na donjem zaslonu:
Samo kliknite na "Dodaj neprimijenjene metode". Višestruke neimplementirane metode (bez tijela) dodane su kodu. Provjerite ispod-
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 } }
Modificirajmo klasu 'ListenerTest'. Konkretno, izmijenit ćemo sljedeće metode-
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Modifikacija je jednostavna. Ispisujemo samo naziv testa.
Dnevnici se kreiraju u konzoli. Korisniku je lako razumjeti koji test ima status prolaza, pada ili preskoka.
Nakon izmjene, kod izgleda ovako-
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()); } }
Korak 2) Napravite drugu klasu "TestCases" za automatizaciju procesa prijave. Selenium će izvršiti ove 'TestCases' za automatsku prijavu.
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); } }
Korak 3) Zatim implementirajte ovaj slušatelj u našu uobičajenu klasu projekta, tj. "TestCases". Postoje dva različita načina povezivanja s klasom i sučeljem.
Prvi način je korištenje napomene slušatelja (@Slušatelji) kao što je prikazano u nastavku:
@Listeners(Listener_Demo.ListenerTest.class)
Ovo koristimo u klasi "TestCases" kao što je prikazano u nastavku.
Dakle, konačno klasa ” TestCases ” izgleda nakon korištenja anotacije Slušatelja:
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); } }
Struktura projekta izgleda ovako:
Korak 4): Izvršite klasu “TestCases”. Metode u klasi “ListenerTest” pozivaju se automatski prema ponašanju metoda označenih kao @Test.
Korak 5): Provjerite izlaz koji se bilježi prikazan na konzoli.
Izlaz 'TestCases' će izgledati ovako:
[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]
Korištenje Slušatelja za više klasa.
Ako projekt ima više klasa, dodavanje slušatelja svakoj od njih moglo bi biti glomazno i sklono pogreškama.
U takvim slučajevima možemo stvoriti testng.xml i dodati oznaku slušatelja u XML-u.
Ovaj slušač implementiran je u cijelom paketu testova bez obzira na broj klasa koje imate. Kada pokrenete ovu XML datoteku, slušatelji će raditi na svim spomenutim klasama. Također možete deklarirati bilo koji broj klasa slušatelja.
Rezime
Od slušatelja se traži generiranje zapisa ili prilagodba TestNG izvješća u Selenium Webdriver.
- Postoje mnoge vrste slušatelja i mogu se koristiti prema zahtjevima.
- Slušatelji su sučelja koja se koriste u selenium web drajveru
- Pokazao korištenje Listener-a u Selenium
- Implementirao je slušatelje za više klasa