TestNG Ascoltatori dentro Selenium: Esempio ITestListener e ITestResult
Ci sono due ascoltatori principali.
- Ascoltatori WebDriver
- TestNG Gli ascoltatori
In questo tutorial, discuteremo su Test Ascoltatori.
In cosa si trovano gli ascoltatori TestNG?
Il listener è definito come un'interfaccia che modifica l'impostazione predefinita TestNG's behavior. Come suggerisce il nome, i Listener "ascoltano" l'evento definito nello script selenium e si comportano di conseguenza. Viene utilizzato in selenium implementando l'interfaccia Listeners. Consente la personalizzazione TestNG rapporti o registri. Ne esistono molti tipi TestNG ascoltatori disponibili.
Tipi di ascoltatori in TestNG
Esistono molti tipi di ascoltatori che ti consentono di modificare il file TestNGil comportamento di.
Di seguito sono riportati i pochi TestNG ascoltatori:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- IConfigurabile,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener .
Sopra vengono chiamate le interfacce TestNG Ascoltatori. Queste interfacce vengono utilizzate in Selenium per generare log o personalizzare il TestNG rapporti.
In questo tutorial implementeremo ITestListener.
ITestListener ha i seguenti metodi
- OnStart- Il metodo OnStart viene chiamato all'avvio di un test.
- onTestSuccess- Il metodo onTestSuccess viene chiamato in caso di successo di qualsiasi test.
- onTestFailure- Il metodo onTestFailure viene chiamato in caso di fallimento di qualsiasi test.
- onTestSkipped- Il metodo onTestSkipped viene chiamato quando viene saltato qualsiasi test.
- onTestFailedButWithinSuccessPercentage- viene chiamato ogni volta che il test fallisce ma rientra nella percentuale di successo.
- onFinish- Il metodo onFinish viene chiamato dopo l'esecuzione di tutti i test.
Scenario di prova
In questo scenario di test, automatizzeremo il processo di accesso e implementeremo "ItestListener".
- Avviare il Firefox e aprire il sito https://demo.guru99.com/V4/
- Accedi all'applicazione.
Passaggi per creare un file TestNG Ascoltatore
Per lo scenario di test precedente, implementeremo Listener.
Passo 1) Crea la classe "ListenerTest" che implementa "ITestListener". Sposta il mouse sul testo con la riga rossa e Eclipse ti suggerirà 2 soluzioni rapide come mostrato nella schermata seguente:
Basta fare clic su “Aggiungi metodi non implementati”. Al codice vengono aggiunti più metodi non implementati (senza corpo). Controlla qui sotto-
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 } }
Modifichiamo la classe 'ListenerTest'. In particolare, modificheremo i seguenti metodi:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
La modifica è semplice. Stampiamo semplicemente il nome del Test.
I log vengono creati nella console. È facile per l'utente capire quale test è uno stato superato, fallito e saltato.
Dopo la modifica, il codice appare così-
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()); } }
Passo 2) Crea un'altra classe "TestCases" per l'automazione del processo di accesso. Selenium eseguirà questo 'TestCases' per accedere automaticamente.
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); } }
Passo 3) Successivamente, implementa questo ascoltatore nella nostra normale classe di progetto, ovvero "TestCases". Esistono due modi diversi per connettersi alla classe e all'interfaccia.
Il primo modo è utilizzare l'annotazione Listeners (@Listeners) come mostrato di seguito:
@Listeners(Listener_Demo.ListenerTest.class)
Lo usiamo nella classe "TestCases" come mostrato di seguito.
Quindi alla fine la classe "TestCases" appare dopo aver utilizzato l'annotazione Listener:
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); } }
La struttura del progetto è simile a:
Passo 4): Esegui la classe "TestCases". I metodi nella classe “ListenerTest” vengono chiamati automaticamente in base al comportamento dei metodi annotati come @Test.
Passo 5): Verificare l'output visualizzato nella console.
L'output dei "TestCases" sarà simile al seguente:
[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]
Utilizzo di Listener per più classi.
Se il progetto ha più classi, aggiungere Listener a ciascuna di esse potrebbe essere complicato e soggetto a errori.
In questi casi, possiamo creare un testng.xml e aggiungere il tag listener in XML.
Questo ascoltatore è implementato in tutta la suite di test indipendentemente dal numero di classi che hai. Quando esegui questo file XML, gli ascoltatori lavoreranno su tutte le classi menzionate. Puoi anche dichiarare un numero qualsiasi di classi listener.
Sommario
Gli ascoltatori sono tenuti a generare log o personalizzare TestNG rapporti in Selenium Webdriver.
- Esistono molti tipi di ascoltatori e possono essere utilizzati in base ai requisiti.
- Gli ascoltatori sono interfacce utilizzate nello script del driver web selenium
- Dimostrato l'uso di Listener in Selenium
- Implementati gli ascoltatori per più classi