Oyentes de TestNG en Selenium: ejemplo de ITestListener y ITestResult


Hay dos oyentes principales.

  1. Oyentes de WebDriver
  2. Oyentes de TestNG

En este tutorial, discutiremos sobre Prueba Oyentes.

¿Qué son los oyentes en TestNG?

El oyente se define como una interfaz que modifica el comportamiento predeterminado de TestNG. Como sugiere el nombre, los oyentes "escuchan" el evento definido en el script de selenio y se comportan en consecuencia. Se utiliza en selenio mediante la implementación de Listeners Interface. Permite personalizar informes o registros de TestNG. Hay muchos tipos de oyentes TestNG disponibles.

Oyentes en TestNG

Tipos de oyentes en TestNG

Hay muchos tipos de oyentes que le permiten cambiar el comportamiento de TestNG.

A continuación se muestran algunos oyentes de TestNG:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. Configurable,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. Enganchable,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. Reportero,
  11. ISuiteListener,
  12. ITestListener.

La interfaz anterior se llama TestNG Listeners. Estas interfaces se utilizan en Selenium para generar registros o personalizar los informes de TestNG.

En este tutorial, implementaremos ITestListener.

ITestListener tiene seguimientowing métodos

  • OnStart- El método OnStart se llama cuando se inicia cualquier prueba.
  • onTestSuccess- El método onTestSuccess se llama en caso de éxito de cualquier prueba.
  • onTestFailure- El método onTestFailure se llama cuando falla cualquier prueba.
  • onTestSkipped- El método onTestSkipped se llama al omitir cualquier prueba.
  • onTestFailedButWithinSuccessPercentage- El método se llama cada vez que la prueba falla pero está dentro del porcentaje de éxito.
  • onFinish- El método onFinish se llama después de ejecutar todas las pruebas.

Escenario de prueba

En este escenario de prueba, automatizaremos el proceso de inicio de sesión e implementaremos 'ItestListener'.

  1. Inicie el Firefox y abre el sitio http://demo.guru99.com/V4/
  2. Escenario de prueba

  3. Inicie sesión en la aplicación.
  4. Escenario de prueba

Pasos para crear un oyente TestNG

Para el escenario de prueba anterior, implementaremos Listener.

Paso 1) Cree la clase "ListenerTest" que implemente 'ITestListener'. Mueva el mouse sobre el texto resaltado y Eclipse Le sugerirá 2 soluciones rápidas como se muestra en la siguiente pantalla:

Pasos para crear un oyente TestNG

Simplemente haga clic en "Agregar métodos no implementados". Se agregan al código varios métodos no implementados (sin cuerpo). Consulte a continuación-

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				
        		
    }		
}		

Modifiquemos la clase 'ListenerTest'. En particular, modificaremos seguirwing métodos-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

La modificación es sencilla. Simplemente imprimimos el nombre de la prueba.

Los registros se crean en la consola. Es fácil para el usuario comprender qué prueba tiene un estado de aprobado, reprobado y omitido.

Después de la modificación, el código se ve así:

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

}			

Paso 2) Cree otra clase "TestCases" para la automatización del proceso de inicio de sesión. Selenium ejecutará estos 'TestCases' para iniciar sesión automáticamente.

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

// Forcefully failed this test as to verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}

Paso 3) A continuación, implemente este oyente en nuestra clase de proyecto habitual, es decir, "TestCases". Hay dos formas diferentes de conectarse a la clase y a la interfaz.

La primera forma es utilizar la anotación de oyentes (@Listeners) como se muestra a continuación:

@Listeners(Listener_Demo.ListenerTest.class)

Usamos esto en la clase "TestCases" como se muestra a continuación.

Finalmente, la clase "TestCases" se ve después de usar la anotación 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("http://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 estructura del proyecto es la siguiente:

Pasos para crear un oyente TestNG

Paso 4): Ejecute la clase “TestCases”. Los métodos de la clase "ListenerTest" se llaman automáticamente según el comportamiento de los métodos anotados como @Test.

Paso 5): Verifique que la salida que registra se muestre en la consola.

La salida de los 'TestCases' se verá así:

Pasos para crear un oyente TestNG

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

Uso de Listener para múltiples clases.

Si el proyecto tiene varias clases, agregar oyentes a cada una de ellas podría resultar engorroso y propenso a errores.

En tales casos, podemos crear un testng.xml y agregar etiquetas de escucha en XML.

Uso de Listener para múltiples clases

Este oyente se implementa en todo el conjunto de pruebas, independientemente del número de clases que tenga. Cuando ejecute este archivo XML, los oyentes trabajarán en todas las clases mencionadas. También puede declarar cualquier número de clases de oyente.

Resumen

Los oyentes deben generar registros o personalizar informes TestNG en Selenium Webdriver.

  • Hay muchos tipos de oyentes y se pueden utilizar según los requisitos.
  • Los oyentes son interfaces utilizadas en el script del controlador web de Selenium.
  • Demostró el uso de Listener en Selenium.
  • Implementé los oyentes para múltiples clases.