TestNG Ascoltatori dentro Selenium: Esempio ITestListener e ITestResult


Ci sono due ascoltatori principali.

  1. Ascoltatori WebDriver
  2. 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.

Ascoltatori dentro TestNG

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:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. IConfigurabile,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. IHookable,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. IReporter,
  11. ISuiteListener,
  12. 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".

  1. Avviare il Firefox e aprire il sito https://demo.guru99.com/V4/
  2. Scenario di prova

  3. Accedi all'applicazione.
  4. Scenario di prova

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:

Passaggi per creare a TestNG Ascoltatore

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:

Passaggi per creare a TestNG Ascoltatore

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:

Passaggi per creare a TestNG Ascoltatore

[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.

Utilizzo di Listener per più classi

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