Introduktion til lyttere i TestNG

Inden vi først lytter lyttere i TestNG, studerer vi lyttere og TestNG separat. Der er tidspunkter, hvor vi ønsker at ændre TestNG's opførsel i vores applikation, og dette kan gøres ved hjælp af grænseflader. Disse grænseflader, der hjælper brugeren til at gøre det, kaldes lyttere. Som navnet antyder, er 'lyttere' primære opgave at lytte til en defineret begivenhed og reagere i overensstemmelse hermed. Det vigtigste formål, som lyttere bruges af programmererne, er at oprette logfiler og oprette de brugerdefinerede rapporter i henhold til det definerede specifikke scenario.

Der er forskellige typer lyttere i TestNG, og hver lytter tjener sit forskellige formål. Nogle af dem er nævnt nedenfor:

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

Metoder til lyttere i TestNG

Selvom der er mange lyttere tilgængelige i TestNG, og hver lytter har specifikke metoder, der tilsidesættes. Lad os diskutere de 2 mest populære lyttere og de metoder, der tilsidesættes af dem:

1. ITestListener

ITestListener er en af ​​de mest anvendte lyttere i Selenium Webdriver. Programmereren skal blot implementere ITestListener-grænsefladen og tilsidesætte alle metoderne i denne grænseflade for at kunne bruge den. Det ringer op før og efter hver test, der er til stede i suiten. Der er flere metoder i det, der er nævnt nedenfor:

  • onStart: Dette er den første og første metode, der kaldes efter, at testklassen er instantieret. Det kan også bruges til at hente det bibliotek, som testen kører fra.
  • onFinish: Dette er den sidste metode, der kaldes, når alle overstyrede metoder er udført.
  • onTestStart (ITestResult-resultat): Denne metode kaldes hver gang inden en ny testmetode. Det angiver, at en påkrævet testmetode startes.
  • onTestFailure (ITestResult-resultat): Denne metode kaldes, når en testmetode mislykkes, da den angiver testens fejl. Vi kan udføre visse opgaver med testfejl, f.eks. Tage skærmbillede, når en bestemt test mislykkes for at få mere dyb indsigt i fejl.
  • onTestSkipped (ITestResult-resultat): Denne metode kaldes, når en testmetode springes over til udførelse.
  • onTestSuccess (ITestResult-resultat): Denne metode kaldes, når en bestemt testmetode udføres med succes. Programmereren kan udføre enhver ønsket operation på succes med testmetoden ved at skrive kode inde i denne metode.
  • onTestFailedButWithinSuccessPercentage (ITestResult-resultat): Denne metode kaldes, når en testmetode mislykkes med en vis succesprocent. For eksempel repræsenterer det tilfældet, hvis en testmetode udføres 10 gange og mislykkes 5 gange. Det tager 2 parametre, dvs. successPercentage and invocationCount. I ovennævnte tilfælde ville succesPerscentage være 50 og invocationCount være 10.

2. ISuiteListener

I modsætning til ITestListener, der implementeres efter hver testmetode, implementeres ISuiteListener på Suite-niveau. Det har to metoder, der tilsidesættes:

  • onStart: Denne metode implementeres før påkaldelsen af testsuiten, hvilket betyder, at al den kode, der er skrevet inde, køres inden starten af ​​en suite.
  • onFinish: Denne metode implementeres efter påkaldelsen af testsuiten, hvilket betyder, at al den kode, der er skrevet inde i den, køres, efter at hele testsuiten er kørt.

Sådan oprettes lyttere i TestNG?

Der er dybest set to måder at oprette lyttere i TestNG:

1. Vi kan bruge @Listeners-interface i klassen.

Trin 1: Det første og vigtigste trin er at oprette en klasse til lytter, der implementerer ITestListener og tilsidesætter alle dens metoder, der 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());
)
)

Trin 2: Derefter skal vi implementere ovenstående lytter i det normale Java-program til login i et program, der har @test-metoderne, der bruger @Listeners-annotation.

Klasse: Test.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);
)
)

Trin 3: Nu kan vi tilføje en post i klassen i XML-filen som den, der er givet nedenfor:

Kode:





Produktion:

2. Vi kan bruge tilføjende lyttere i XML-filen direkte.

Selvom ovenstående tilgang til at tilføje @listeners i specifikt klassearbejde i en suite med så mange klasser, betragtes det ikke som en dejlig tilgang at tilføje lytteren til hver klasse. I stedet kan vi oprette posten til lyttere og klasser i XML-filen.

Trin 1: Oprettelse af en lytterklasse i Java, der implementerer ITestListener og tilsidesætter metoderne til den, der ligner den, der er nævnt 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());
)
)

Trin 2: Herefter skal vi oprette et normalt Java-program til login i et program, der har alle @test-metoder, og der er ikke behov for at bruge @Listeners-kommentar.

Klasse: Test.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);
)
)

Trin 3: Nu kan vi tilføje en post til lytteren og klassen i XML-filen som den, der er givet nedenfor:

Kode:







Produktion:

Konklusion

Ovenfor beskrivelsen af ​​lyttere giver klart den grundlæggende forståelse af lyttere og hvordan de implementeres i Java-programmet for at tilpasse logfiler og rapporter. Før du bruger nogen lytter, kræves en klar forståelse af alle lyttere og de specifikke scenarier, som de skal bruges sammen med de metoder, de tilsidesætter.

Anbefalede artikler

Dette er en guide til lyttere i TestNG. Her diskuterer vi metoder til lyttere i TestNG og to måder at oprette lyttere i TestNG. Du kan også gennemgå vores andre relaterede artikler for at lære mere-

  1. Installer TestNG
  2. AngularJS Begivenheder
  3. Hvad er XPath?
  4. Testning af rammer til Java
  5. Java-kommentarer
  6. Overstyring i Java

Kategori: