Introduzione agli ascoltatori in TestNG

Prima di comprendere prima gli ascoltatori in TestNG, studieremo gli ascoltatori e TestNG separatamente. Ci sono momenti in cui desideriamo modificare il comportamento di TestNG nella nostra applicazione e questo può essere fatto dalle interfacce. Queste interfacce che aiutano l'utente a farlo sono note come ascoltatori. Come suggerisce il nome, il compito principale di "Ascoltatori" è ascoltare un evento definito e reagire in base a ciò. Lo scopo principale per cui i programmatori vengono utilizzati dai programmatori è quello di creare registri e creare report personalizzati in base allo scenario specifico definito.

Esistono vari tipi di ascoltatori in TestNG e ogni ascoltatore ha il suo scopo diverso. Alcuni di questi sono menzionati di seguito:

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

Metodi di ascoltatori in TestNG

Sebbene ci siano molti listener disponibili in TestNG e ogni ascoltatore ha metodi specifici che vengono sovrascritti. Discutiamo i 2 ascoltatori più popolari e i metodi che vengono sovrascritti da loro:

1. ITestListener

ITestListener è uno degli ascoltatori più comunemente utilizzati in Selenium Webdriver. Il programmatore deve semplicemente implementare l'interfaccia ITestListener e sovrascrivere tutti i metodi di questa interfaccia per poterla utilizzare. Effettua la chiamata prima e dopo ogni test presente nella suite. Ci sono diversi metodi in esso che sono menzionati di seguito:

  • onStart: questo è il primo e più importante metodo che viene chiamato dopo aver istanziato la classe test. Può anche essere utilizzato per recuperare la directory da cui è in esecuzione il test.
  • onFinish: questo è l'ultimo metodo da chiamare dopo che sono stati eseguiti tutti i metodi sostituiti.
  • onTestStart (risultato ITestResult): questo metodo viene chiamato ogni volta prima di qualsiasi nuovo metodo di prova. Indica che è stato avviato un metodo di prova richiesto.
  • onTestFailure (risultato ITestResult): questo metodo viene chiamato quando un metodo di prova fallisce poiché indica gli errori del test. Siamo in grado di eseguire determinate attività in caso di fallimento del test, ad esempio acquisire lo screenshot quando un determinato test fallisce al fine di ottenere una visione più approfondita del fallimento.
  • onTestSkipped (risultato ITestResult): questo metodo viene chiamato quando un metodo di prova viene ignorato per l'esecuzione.
  • onTestSuccess (risultato ITestResult): questo metodo viene chiamato quando un particolare metodo di test viene eseguito correttamente. Il programmatore può eseguire qualsiasi operazione desiderata sul successo del metodo di prova scrivendo il codice all'interno di questo metodo.
  • onTestFailedButWithinSuccessPercentage (risultato ITestResult): questo metodo viene chiamato quando un metodo di test fallisce con una percentuale di successo. Ad esempio, rappresenta il caso, se un metodo di prova viene eseguito 10 volte e fallito 5 volte. Richiede 2 parametri, ovvero successPercentage e invocationCount. Per il caso precedente, successPercentage sarebbe 50 e invocationCount sarebbe 10.

2. ISuiteListener

A differenza di ITestListener, implementato dopo ogni metodo di test, ISuiteListener è implementato a livello di Suite. Ha due metodi che sono sovrascritti:

  • onStart: questo metodo è implementato prima dell'invocazione della suite di test, il che significa che tutto il codice scritto al suo interno viene eseguito prima dell'inizio di qualsiasi suite.
  • onFinish: questo metodo è implementato dopo l'invocazione della suite di test, il che significa che tutto il codice scritto al suo interno viene eseguito dopo l'esecuzione dell'intera suite di test.

Come creare ascoltatori in TestNG?

Esistono sostanzialmente 2 modi per creare ascoltatori in TestNG:

1. Possiamo usare l'interfaccia @Listeners all'interno della classe.

Passaggio 1: il primo e primo passo è creare una classe per Listener che sta implementando ITestListener e sovrascrivendo tutti i suoi metodi spiegati sopra.

Classe: TestListener.java

Codice:

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

Passaggio 2: Successivamente è necessario implementare il Listener sopra riportato nel normale programma Java di accesso in un'applicazione con i metodi @test utilizzando l'annotazione @Listeners.

Classe: Testing.java

Codice:

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

Passaggio 3: ora possiamo aggiungere una voce della classe nel file XML come quella indicata di seguito:

Codice:





Produzione:

2. Possiamo usare direttamente i listener nel file XML.

Sebbene l'approccio sopra descritto di aggiungere i listener @ in specifici compiti in una suite con così tante classi, non è considerato un buon approccio per aggiungere il listener a ogni classe. Invece, possiamo creare la voce di listener e classi nel file XML.

Passaggio 1: Creare una classe Listener in Java implementando ITestListener e sovrascrivendone i metodi simili a quello sopra menzionato.

Classe: TestListener.java

Codice:

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

Passaggio 2: Successivamente è necessario creare un normale programma di accesso Java in un'applicazione con tutti i metodi @test e non è necessario utilizzare l'annotazione @Listeners.

Classe: Testing.java

Codice:

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

Passaggio 3: Ora possiamo aggiungere una voce del listener e della classe nel file XML come quella indicata di seguito:

Codice:







Produzione:

Conclusione

Sopra la descrizione di Listener fornisce chiaramente la comprensione di base di Listener e come vengono implementati nel programma Java al fine di personalizzare i log e i report. Prima di utilizzare qualsiasi ascoltatore, è necessaria una chiara comprensione di tutti gli ascoltatori e degli scenari specifici in cui devono essere utilizzati insieme ai metodi che sovrascrivono.

Articoli consigliati

Questa è una guida per gli ascoltatori in TestNG. Qui discutiamo i metodi di ascoltatori in TestNG e due modi per creare ascoltatori in TestNG. Puoi anche consultare i nostri altri articoli correlati per saperne di più-

  1. Installa TestNG
  2. Eventi AngularJS
  3. Che cos'è XPath?
  4. Test dei framework per Java
  5. Annotazioni Java
  6. Sostituzione in Java

Categoria: