Ci sono due principali ascoltatori.
- Listener WebDriver
- Ascoltatori TestNG
In questo tutorial, discuteremo su Testng Listeners. Ecco cosa imparerai-
- Cosa sono gli ascoltatori in TestNG?
- Tipi di ascoltatori in TestNG
- Scenario di prova:
- Passaggi per creare un listener TestNG
- Uso di Listener per più classi.
Cosa sono gli ascoltatori in TestNG?
Il listener è definito come l'interfaccia che modifica il comportamento predefinito di TestNG. Come suggerisce il nome, gli ascoltatori "ascoltano" l'evento definito nello script selenio e si comportano di conseguenza. Viene utilizzato nel selenio implementando l'interfaccia Listeners. Consente la personalizzazione dei rapporti o dei registri di TestNG. Sono disponibili molti tipi di listener TestNG.
Tipi di ascoltatori in TestNG
Esistono molti tipi di listener che consentono di modificare il comportamento di TestNG.
Di seguito sono riportati i pochi ascoltatori di TestNG:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- IConfigurabile,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
L'interfaccia sopra è chiamata TestNG Listeners. Queste interfacce vengono utilizzate nel selenio per generare log o personalizzare i report TestNG.
In questo tutorial, implementeremo ITestListener.
ITestListener ha i seguenti metodi
- OnStart : il metodo OnStart viene chiamato all'avvio di un test.
- Il metodo onTestSuccess- onTestSuccess viene chiamato in caso di successo di qualsiasi test.
- onTestFailure- onTestFailure viene chiamato in caso di fallimento di un test.
- onTestSkipped- onTestSkipped viene chiamato in caso di salto di qualsiasi test.
- Il metodo onTestFailedButWithinSuccessPercentage viene chiamato ogni volta che il test fallisce ma rientra nella percentuale di successo.
- Il metodo onFinish- onFinish viene chiamato dopo che tutti i test sono stati eseguiti.
Scenario di prova:
In questo scenario di test, automatizzeremo il processo di accesso e implementeremo "ItestListener".
- Avvia Firefox e apri il sito "http://demo.guru99.com/V4/"
- Accedi all'applicazione.
Passaggi per creare un listener TestNG
Per lo scenario di test sopra, implementeremo Listener.
Passaggio 1) Creare la classe "ListenerTest" che implementa "ITestListener". Sposta il mouse sul testo della linea rossa ed 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 un corpo). Controlla di seguito-
pacchetto Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;La classe pubblica ListenerTest implementa ITestListener{@Oltrepassarepublic void onFinish (ITestContext arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onStart (ITestContext arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onTestFailure (ITestResult arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onTestSkipped (ITestResult arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onTestStart (ITestResult arg0) {// TODO Stub del metodo generato automaticamente}@Oltrepassarepublic void onTestSuccess (ITestResult arg0) {// TODO Stub del metodo generato automaticamente}}
Modifichiamo la classe "ListenerTest". In particolare, modificheremo i seguenti metodi:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, ecc.
La modifica è semplice. Stampiamo solo il nome del test.
I registri vengono creati nella console. È facile per l'utente capire quale test è uno stato superato, non superato e ignorato.
Dopo la modifica, il codice appare come:
pacchetto Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;La classe pubblica ListenerTest implementa ITestListener{@Oltrepassarepublic void onFinish (ITestContext Result){}@Oltrepassarepublic void onStart (ITestContext Result){}@Oltrepassarepublic void onTestFailedButWithinSuccessPercentage (ITestResult Result){}// Quando il test case fallisce, viene chiamato questo metodo.@Oltrepassarepublic void onTestFailure (ITestResult Result){System.out.println ("Il nome del testcase non riuscito è: + Result.getName ());}// Quando il test case viene ignorato, viene chiamato questo metodo.@Oltrepassarepublic void onTestSkipped (ITestResult Result){System.out.println ("Il nome del testcase Ignorato è: + Result.getName ());}// Quando viene avviato il test case, viene chiamato questo metodo.@Oltrepassarepublic void onTestStart (ITestResult Result){System.out.println (Result.getName () + "test case avviato");}// Quando viene superato il test case, viene chiamato questo metodo.@Oltrepassarepublic void onTestSuccess (ITestResult Result){System.out.println ("Il nome del testcase passato è: + Result.getName ());}}
Passaggio 2) Creare un'altra classe "TestCases" per l'automazione del processo di accesso. Selenium eseguirà questo "TestCase" per accedere automaticamente.
pacchetto 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;Importa org.testng.annotations.Test;public class TestCases {Driver WebDriver = nuovo FirefoxDriver ();// Test per passare as per verificare i listener.@Testpublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("password")). sendKeys ("amUpenu");driver.findElement (By.name ("btnLogin")). click ();}// Ha fallito forzatamente questo test per verificare l'ascoltatore.@Testpublic void TestToFail (){System.out.println ("Questo metodo per testare fallisce");Assert.assertTrue (false);}}
Passaggio 3) Successivamente, implementa questo listener 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, infine, la classe "TestCases" appare dopo aver utilizzato l'annotazione Listener:
pacchetto 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 {Driver WebDriver = nuovo FirefoxDriver ();// Test per passare as per verificare i listener.@Testpublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("password")). sendKeys ("amUpenu");driver.findElement (By.id ("")). clic ();}// Ha fallito forzatamente questo test come listener di verifica.@Testpublic void TestToFail (){System.out.println ("Questo metodo per testare fallisce");Assert.assertTrue (false);}}
La struttura del progetto si presenta come:
Passaggio 4): eseguire la classe "TestCases". I metodi nella classe "ListenerTest" vengono chiamati automaticamente in base al comportamento dei metodi annotati come @Test.
Passaggio 5): verificare l'output visualizzato nei log sulla console.
L'output dei "TestCases" sarà simile a questo:
[TestNG] In esecuzione:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customuite.xmlScenario di test di accesso avviatoIl nome del testcase superato è: LoginTest case TestToFail avviatoQuesto metodo per testare fallisceIl nome del testcase non riuscito è: TestToFailSUPERATO: AccediNON RIUSCITO: TestToFailjava.lang.AssertionError: previsto [true] ma trovato [false]
Uso di Listener per più classi.
Se il progetto ha più classi l'aggiunta di Listeners a ciascuna di esse potrebbe essere macchinosa e soggetta a errori.
In questi casi, possiamo creare un testng.xml e aggiungere un tag listener in XML.
Questo listener è implementato in tutta la suite di test indipendentemente dal numero di classi che hai. Quando esegui questo file XML, i listener 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 i report TestNG in Selenium Webdriver.
- Esistono molti tipi di ascoltatori e possono essere utilizzati secondo i requisiti.
- I listener sono interfacce utilizzate nello script del driver web selenio
- Dimostrato l'uso di Listener in Selenio
- Implementato gli ascoltatori per più classi