Uvod u slušatelje u TestNG-u

Prije nego što prvo razumijemo slušatelje u TestNG-u, posebno ćemo proučiti slušatelje i testNG. Postoje slučajevi kada želimo izmijeniti ponašanje TestNG-a u našoj aplikaciji, a to možemo učiniti pomoću sučelja. Ova sučelja koja korisniku pomažu u tome su poznata kao Slušatelji. Kao što ime sugerira, primarna zadaća slušatelja je preslušati definirani događaj i reagirati u skladu s tim. Glavna svrha koju programeri slušatelje koriste su izrada dnevnika i izrada prilagođenih izvješća prema definiranom scenariju.

U TestNG-u postoje razne vrste slušatelja i svaki slušatelj služi svojoj različitoj svrsi. Neke od njih su spomenute u nastavku:

  1. IConfigurable
  2. IAnnotationTransformer
  3. IHookable
  4. IReporter
  5. ISuiteListener

Metode slušatelja u TestNG-u

Iako je u TestNG-u dostupno mnogo slušalaca, svaki slušatelj ima određene metode koje se preglasavaju. Raspravimo o 2 najpopularnija slušatelja i metodama koje ih prevladava:

1. ITestListener

ITestListener je jedan od najčešće korištenih slušalaca u Selenium Webdriveru. Programer jednostavno treba implementirati ITestListener sučelje i nadjačati sve metode ovog sučelja kako bi ga koristio. Poziva prije i nakon svakog testa prisutnog u apartmanu. Postoji nekoliko metoda koje su navedene u nastavku:

  • onStart: Ovo je prva i glavna metoda koja se poziva nakon instanciranja klase ispitivanja. Može se koristiti i za dohvaćanje direktorija iz kojeg se test izvodi.
  • onFinish: Ovo je posljednja metoda koju treba pozvati nakon što se izvrše sve poništene metode.
  • onTestStart (rezultat ITestResult): Ova se metoda poziva svaki put prije bilo koje nove metode ispitivanja. To ukazuje da je pokrenuta potrebna metoda ispitivanja.
  • onTestFailure (rezultat ITestResult): Ova metoda se poziva kada bilo koja metoda ispitivanja nije uspjela jer ukazuje na pogreške testa. Možemo obaviti određene zadatke na neuspjehu testa, poput snimanja zaslona kad neki test ne uspije, kako bismo dobili dublji uvid u neuspjeh.
  • onTestSkipped (rezultat ITestResult): Ova metoda se poziva kada je preskočena bilo koja metoda ispitivanja za izvršenje.
  • onTestSuccess (rezultat ITestResult): Ova metoda se poziva kada se uspješno izvrši određena metoda ispitivanja. Programer može izvršiti bilo koju željenu operaciju na uspjehu metode ispitivanja pišući kod unutar ove metode.
  • onTestFailedButWithinSuccessPercentage (rezultat ITestResult): Ova metoda se poziva kada bilo koja metoda ispitivanja nije uspjela s nekim postotkom uspjeha. Na primjer, predstavlja slučaj, ako se bilo koja metoda ispitivanja izvodi 10 puta, a neuspjeh 5 puta. Potrebna su dva parametra, tj. Uspješnost postotka i račun poziva. U gornjem slučaju, uspješnost postotka bila bi 50, a broj priziva 10.

2. ISuiteListener

Za razliku od ITestListener-a koji se implementira nakon svake metode ispitivanja, ISuiteListener se implementira na razini Suite. Ima dvije metode koje se preglasavaju:

  • onStart: Ova se metoda implementira prije poziva testnog skupa, što znači da se sav kod koji je napisan unutar njega pokreće prije početka bilo kojeg paketa.
  • onFinish: Ova metoda se implementira nakon poziva testnog skupa, što znači da se sav kod, upisan u njemu, pokreće nakon pokretanja čitavog testnog skupa.

Kako stvoriti slušatelje u TestNG-u?

Postoje dva načina stvaranja slušatelja u TestNG-u:

1. U okviru klase možemo koristiti sučelje @Listeners.

Korak 1: Prvi i najvažniji korak je kreiranje klase za slušatelje koji implementira ITestListener i nadjačava sve gore opisane metode.

Klasa: TestListener.java

Kodirati:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Korak 2: Zatim moramo implementirati gornjeg Slušatelja u uobičajeni Java Program za prijavu u aplikaciji koja ima metode @test pomoću napomena @Listeners.

Razred: Ispitivanje.java

Kodirati:

package 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(Demo.TestListener.class)
public class Testing
(
String driverPath =
"C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass .
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Korak 3: Sada možemo dodati unos klase u XML datoteku poput onoga navedenog u nastavku:

Kodirati:





Izlaz:

2. Možemo izravno dodati slušatelje u XML datoteku.

Iako gornji pristup dodavanja @listenera u specifične razredne zadatke u paketu koji ima toliko satova, ne smatra se lijepim pristupom dodavanju slušatelja u svaki razred. Umjesto toga, možemo stvoriti unos Slušatelja i klasa u XML datoteku.

Korak 1: Stvaranje klase slušatelja u Javi implementirajući ITestListener i poništavajući njegove metode slične onoj gore spomenutoj.

Klasa: TestListener.java

Kodirati:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Korak 2: Zatim moramo kreirati normalan Java program za prijavu u aplikaciji koja ima sve @test metode i nema potrebe za bilješkom @Listeners.

Razred: Ispitivanje.java

Kodirati:

package 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 Testing
(
String driverPath = "C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass.
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Korak 3: Sada u XML datoteku možemo dodati unos slušatelja i klase poput onoga navedenog u nastavku:

Kodirati:







Izlaz:

Zaključak

Iznad opisa slušatelja jasno se daje osnovno razumijevanje slušatelja i kako su implementirani u program Java kako bi prilagodili zapise i izvještaje. Prije upotrebe bilo kojeg slušatelja potrebno je jasno razumijevanje svih slušatelja i specifičnih scenarija u kojima ih treba koristiti, zajedno s metodama koje prevladavaju.

Preporučeni članci

Ovo je vodič za slušatelje u TestNG-u. Ovdje smo raspravljali o metodama slušatelja u TestNG-u i dva načina stvaranja slušatelja u TestNG-u. Možete i proći kroz naše druge povezane članke da biste saznali više -

  1. Instalirajte TestNG
  2. AngularJS Događaji
  3. Što je XPath?
  4. Ispitivanje okvira za Java
  5. Java primjedbe
  6. Prevladavanje u Javi

Kategorija: