Introduksjon til lyttere i TestNG

Før vi først lærer lyttere i TestNG, vil vi studere lyttere og TestNG hver for seg. Det er tider hvor vi ønsker å endre oppførselen til TestNG i applikasjonen vår, og dette kan gjøres av grensesnitt. Disse grensesnittene som hjelper brukeren til å gjøre det, er kjent som lyttere. Som navnet antyder er 'Lyttere' primære oppgave å lytte til en hendelse som er definert og reagere i henhold til den. Hovedformålet som lytterne brukes av programmererne er å lage logger og lage de tilpassede rapportene i henhold til det spesifikke scenariet som er definert.

Det er forskjellige typer lyttere i TestNG, og hver lytter tjener sitt forskjellige formål. Noen av dem er nevnt nedenfor:

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

Metoder for lyttere i TestNG

Selv om det er mange lyttere tilgjengelig i TestNG, og hver lytter har spesifikke metoder som blir tilsidesatt. La oss diskutere de to mest populære lytterne og metodene som overstyres av dem:

1. ITestListener

ITestListener er en av de mest brukte lytterne i Selenium Webdriver. Programmereren trenger ganske enkelt å implementere ITestListener-grensesnittet og overstyre alle metodene for dette grensesnittet for å kunne bruke det. Det ringer før og etter hver test til stede i suiten. Det er flere metoder i det som er nevnt nedenfor:

  • onStart: Dette er den første og fremste metoden som kalles etter at testklassen er innstilt. Det kan også brukes til å hente katalogen som testen kjøres fra.
  • onFinish: Dette er den siste metoden som blir kalt etter at alle overstyrte metoder er utført.
  • onTestStart (ITestResult-resultat): Denne metoden kalles hver gang før en ny testmetode. Det indikerer at en nødvendig testmetode startes.
  • onTestFailure (ITestResult-resultat): Denne metoden kalles når en testmetode mislykkes, fordi den indikerer feilene i testen. Vi kan utføre visse oppgaver på testfeil, som å ta skjermdump når en bestemt test mislykkes for å få mer dyp innsikt i feil.
  • onTestSkipped (ITestResult-resultat): Denne metoden kalles når en testmetode hoppes over for utførelse.
  • onTestSuccess (ITestResult-resultat): Denne metoden kalles når en bestemt testmetode utføres vellykket. Programmereren kan utføre hvilken som helst ønsket operasjon på suksess med testmetoden ved å skrive kode i denne metoden.
  • onTestFailedButWithinSuccessPercentage (ITestResult-resultat): Denne metoden kalles når en testmetode mislykkes med noen suksessprosent. For eksempel representerer det tilfellet, hvis noen testmetode blir utført 10 ganger og mislyktes 5 ganger. Det tar to parametere, dvs. successPercentage and invocationCount. For ovennevnte tilfelle vil suksessprosent være 50 og innkallingstallet ville være 10.

2. ISuiteListener

I motsetning til ITestListener, som implementeres etter hver testmetode, implementeres ISuiteListener på Suite-nivå. Den har to metoder som overstyres:

  • onStart: Denne metoden implementeres før påkallingen av testsuiten, som betyr at all koden som er skrevet inne i den kjøres før starten av en suite.
  • onFinish: Denne metoden implementeres etter påkallingen av testserien, som betyr at all koden som er skrevet inne i den kjøres etter at hele testsuiten er kjørt.

Hvordan lage lyttere i TestNG?

Det er i utgangspunktet to måter å lage lyttere i TestNG:

1. Vi kan bruke @Listeners-grensesnittet i klassen.

Trinn 1: Det første og fremst trinnet er å lage en klasse for Listener som implementerer ITestListener og overstyrer alle metodene som er beskrevet ovenfor.

Klasse: TestListener.java

Kode:

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());
)
)

Trinn 2: Deretter må vi implementere ovennevnte lytter i det vanlige Java-programmet for innlogging i et program som har @test-metodene ved å bruke @Listeners-merknad.

Klasse: Testing.java

Kode:

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);
)
)

Trinn 3: Nå kan vi legge til en oppføring av klassen i XML-filen som den som er gitt nedenfor:

Kode:





Produksjon:

2. Vi kan bruke add Listers i XML-filen direkte.

Selv om den ovenfor angitte tilnærmingen til å legge @listene til i spesifikke klassearbeider i en suite som har så mange klasser, er det ikke ansett som en fin tilnærming å legge lytteren til hver klasse. I stedet kan vi lage oppføringen til lyttere og klasser i XML-filen.

Trinn 1: Opprette en lytterklasse i Java som implementerer ITestListener og overstyrer metodene til den som ligner den som er nevnt over.

Klasse: TestListener.java

Kode:

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());
)
)

Trinn 2: Deretter må vi lage et normalt Java-program for pålogging i et program som har alle @test-metodene, og det er ikke nødvendig å bruke @Listeners-kommentarer.

Klasse: Testing.java

Kode:

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);
)
)

Trinn 3: Nå kan vi legge til en oppføring av lytteren og klassen i XML-filen som den som er gitt nedenfor:

Kode:







Produksjon:

Konklusjon

Over beskrivelsen av lytterne gir tydelig den grunnleggende forståelsen av lytterne og hvordan de implementeres i Java-programmet for å tilpasse loggene og rapportene. Før du bruker noen lytter, kreves det en klar forståelse av alle lytterne og de spesifikke scenariene de trenger å brukes sammen med metodene de overstyrer.

Anbefalte artikler

Dette er en guide til lyttere i TestNG. Her diskuterer vi metoder for lyttere i TestNG og to måter å lage lyttere i TestNG. Du kan også gå gjennom andre relaterte artikler for å lære mer-

  1. Installer TestNG
  2. AngularJS Events
  3. Hva er XPath?
  4. Testing Frameworks for Java
  5. Java-merknader
  6. Overstyrer i Java