TestNG Generación de informes en Selenium: ¿Cómo generar?

⚡ Resumen inteligente

TestNG Los informes son los archivos de resultados HTML predeterminados que TestNG Tras cada ejecución, escribe en la carpeta test-output un informe que muestra qué casos de prueba pasaron, fallaron o se omitieron, además de los registros del Reporter.

  • 🔘 Salida predeterminada: Cada TestNG El comando `run` crea una carpeta de resultados de prueba sin necesidad de código adicional.
  • ☑️ Dos vistas HTML: emailable-report.html resume los resultados, index.html enlaza con las vistas detalladas.
  • Registros del reportero: Reporter.log() escribe mensajes personalizados directamente en el informe generado.
  • 🧪 La suite se ejecuta: Al ejecutar testng.xml, se agrupan varias clases en un informe consolidado.
  • 🛠️ Personalización: ITestListener e IReporter permiten a un equipo crear su propio formato de informe.
  • 📊 Más allá de los valores predeterminados: ExtentReports y Allure permiten añadir gráficos, historial y archivos adjuntos de capturas de pantalla.

TestNG generación de informes en Selenium

¿Qué son TestNG ¿Informes?

TestNG Informes son los informes HTML predeterminados que se generan una vez que se ejecutan los casos de prueba utilizando TestNG. Estos informes le ayudan a identificar la información sobre los casos de prueba y el estado de un proyecto. TestNG informes en Selenium Registra tres resultados para cada método de prueba (aprobado, reprobado y omitido) para que puedas consultar los datos sobre los casos de prueba de un vistazo.

La generación de informes es muy importante cuando se realizan pruebas de automatización y pruebas manuales.

  • Al observar el resultado, puede identificar fácilmente cuántos casos de prueba se aprobaron, fallaron y se omitieron.
  • Al mirar el informe, sabrá cuál es el estado del proyecto.

Selenium WebDriver se utiliza para automatizar la aplicación web, pero no genera ningún informe por sí mismo.

  • El TestNG generará el informe predeterminado.
  • Cuando ejecute el archivo testng.xml y actualice el proyecto, obtendrá una carpeta test-output, y esa carpeta contiene la salida de informes de TestNG.
  • Haga clic con el botón derecho en emailable-report.html y seleccione la opción Abrir con el navegador web.

Nota: El comportamiento descrito aquí no cambia en TestNG 7.x. Versiones de TestNG Las versiones 7.6 en adelante requieren JDK 11 o superior, por lo que es posible que un proyecto antiguo necesite actualizar su nivel de JDK antes de que se generen los informes.

Tipos de TestNG Informes en la carpeta de resultados de prueba

Antes de abrir cualquier archivo, conviene saber qué contiene realmente la carpeta de resultados de la prueba. TestNG En cada ejecución, genera varios artefactos, y cada uno responde a una pregunta diferente.

Archivo o carpeta Lo que contiene Cuando sea útil
index.html El informe de aterrizaje que enlaza con los resultados, los grupos, los horarios y las vistas de salida del reportero. Analizando una partida en detalle.
informe-enviable-por-correo-electrónico.html Una única página independiente que resume los métodos aprobados, fallidos y omitidos por clase. Compartir un resultado con personas que no están abriendo el proyecto.
testng-results.xml El XML legible por máquina generado por el generador de informes XML integrado, con información sobre el estado y la duración de cada método. Alimentar un panel de control o un analizador personalizado.
Informes de JUnit JUnit-Formato de archivos XML, uno por cada clase de prueba. Cualquier complemento CI que lea el JUnit formato del resultado.
testng-failed.xml Un archivo de suite generado que enumera únicamente los métodos que fallaron. Volver a ejecutar solo las pruebas que fallaron, en lugar de ejecutar el conjunto completo de pruebas.

Los dos archivos HTML son los que se abren a continuación en este tutorial, por lo que la explicación que sigue comienza con emailable-report.html.

Cómo generar informes en Selenium

Método 1: emailable-report.html

  1. Haga clic en la opción “emailable-report.html”
  2. Haga clic en la opción del navegador web

La captura de pantalla que aparece a continuación muestra cómo se abre el archivo emailable-report.html desde la carpeta test-output.

Seleccionar emailable-report.html dentro del TestNG carpeta de salida de prueba

Los informes de salida en TestNG Los informes se verán como a continuación si se aprueban ambas clases:

TestNG Informe que se puede enviar por correo electrónico y que muestra que las clases de prueba DemoA y DemoB se han superado.

Considere el escenario en el que está fallando intencionalmente el caso de prueba, es decir, la clase DemoB. Luego, convierta ambas clases en el archivo de la suite testng.xml y ejecútelo. Luego, el resultado se verá así. Mostrará casos de prueba fallidos.

Este es el resultado de la clase DemoB:

Informe que se puede enviar por correo electrónico y que destaca el caso de prueba DemoB que falló intencionalmente.

De manera similar, el resultado de la Clase DemoA se verá así:

Fila de resumen del informe que se puede enviar por correo electrónico para la clase DemoA aprobada.

Método 2: index.html

  1. Haga clic derecho en index.html desde el directorio del proyecto.
  2. Seleccione la opción Abrir con el navegador web. Se mostrará el resultado en el siguiente orden.

La captura de pantalla que aparece a continuación muestra cómo se abre el archivo index.html desde el directorio del proyecto.

Abrir index.html desde el directorio del proyecto en un navegador web.

El resultado se verá así:

TestNG index.html página de inicio del informe que muestra las vistas de los resultados de la ejecución

Método 3: clase de reportero

Junto con estos TestNG métodos generados por informes, puede utilizar el archivo object.properties para almacenar los registros generados por el sistema, así como los registros generados por el usuario. Pero una de las formas más sencillas de almacenar información de registro en las pruebas es utilizar Clase de reportero.

Reportero.iniciar sesión Selenium es una clase presente en TestNG por la Selenium informes. Proporciona 4 métodos diferentes para almacenar información de registro:

  1. Reporter.log(Cadena s);
  2. Reporter.log(String s, logToStandardOut booleano);
  3. Reporter.log (cadena s, nivel int);
  4. Reporter.log(String s, nivel int, logToStandardOut booleano);

El segundo argumento decide si el mensaje se muestra también en la consola, además de en el informe, y el argumento de nivel controla el grado de detalle con el que se mantiene el mensaje.

Ejemplo:

Cree dos clases como DemoA y DemoB y escriba el siguiente código dentro de las clases.

Para demostración de clase A;

  • El Code para DemoA ya ​​se explicó anteriormente. Aquí estás usando método de registro de la clase Reporter. (Para implementar una clase de informes propia, la clase debe implementar la interfaz org.testng.IReporter).
  • El método de registro es un método estático de la clase Reporter. Entonces estás accediendo a ese método a través de la clase Reporter.
  • El método de registro se utiliza para almacenar información de registro que se escribe dentro del programa. Al observar la información del registro, sabrá fácilmente dónde se detiene exactamente la ejecución del programa.

La captura de pantalla que aparece a continuación muestra las llamadas a Reporter.log que se encuentran dentro de la clase DemoA.

Declaraciones de Reporter.log escritas dentro de la clase de prueba DemoA

Para demostración de clase B:

Declaraciones de Reporter.log escritas dentro de la clase de prueba DemoB

  • Ahora, cree el archivo testng.xml seleccionando estas dos clases y
  • Seleccione ejecutar como y
  • Haga clic en convertir a testng.
  • Luego ejecute este archivo testng.xml seleccionando ejecutar como y seleccione testng suite.
  • Luego actualice el proyecto y abra la carpeta de salida de prueba.
  1. En la carpeta de salida de prueba, abra el archivo emailable-report.html. Se verá así:

    Informe que se puede enviar por correo electrónico después de ejecutar el conjunto de pruebas DemoA y DemoB.

    De manera similar, también tendrá una Salida para el proyecto Demo B.

  2. En la carpeta test-output, abre el archivo index.html. Tendrá este aspecto:

    El informe index.html se generó después de la ejecución del conjunto de pruebas testng.xml.

Haga clic en la salida del reportero. Abrirá la información de registro escrita en los métodos de prueba.

TestNG Vista de salida del reportero que enumera los mensajes registrados por los métodos de prueba.

Haga clic en los tiempos. Mostrará cuánto tiempo tomó ejecutar el método de prueba presente en clase usando TestNG herramientas de informes.

TestNG Vista de tiempos que muestra cuánto tiempo tardó en ejecutarse cada método de prueba.

Cómo personalizar TestNG Informes con ITestListener e IReporter

Los tres métodos anteriores utilizan lo que sea. TestNG produce por defecto. Cuando un equipo necesita un diseño diferente, campos adicionales o una vista de progreso en vivo, TestNG expone dos puntos de extensión en lugar de pedirle que modifique el informe predeterminado.

  • ITestListener Recibe notificaciones en tiempo real cuando cada prueba comienza, se aprueba, falla o se omite. Úsala cuando necesites capturar la información en el momento en que ocurre el evento; por ejemplo, una captura de pantalla en caso de fallo.
  • Reportero Se notifica una sola vez, después de que finaliza cada conjunto de pruebas, y recibe objetos que describen toda la ejecución. Úselo cuando el resultado sea un documento finalizado, como un PDF o una página HTML personalizada.

Un oyente que envía cada resultado al informe a través de la clase Reporter tiene este aspecto.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

El registro del oyente se realiza en el mismo archivo de suite testng.xml que ya creó para DemoA y DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Hay dos opciones de línea de comandos que conviene conocer mientras experimentas. -d La opción cambia el directorio donde se escriben los informes y -usedefaultlisteners falso Desactiva los reporteros integrados para que solo funcione tu propio oyente. Ambos se describen en el documento oficial. TestNG registro y documentación de resultados, que también documenta las propiedades aceptadas por el generador de informes XML integrado.

Un oyente se registra una vez y luego se aplica a todas las clases de la suite, razón por la cual los equipos que ejecutan grandes pruebas de automatización Por lo general, los equipos prefieren este método a agregar manualmente líneas de registro a cada método de prueba.

TestNG Informes predeterminados frente a ExtentReports frente a Allure

Los informes predeterminados son suficientes para un conjunto pequeño, pero no contienen historial ni gráficos. Dos bibliotecas de código abierto se suelen añadir cuando un conjunto crece, y ambas funcionan con TestNG.

Capacidad TestNG la página predeterminada Informes de extensión Informe de encanto
Esfuerzo de configuración Ninguno — producido automáticamente Agregue la biblioteca y escriba el código del reportero. Agregue el adaptador y luego genere el informe a partir de los resultados.
Gráficos y paneles de control No Sí: Sí:
Imágenes Solo mediante el marcado Reporter.log API de adjuntos integrada API de adjuntos integrada
Historial de carreras y tendencias No A través del componente de servidor opcional Sí, a partir de resultados anteriores almacenados.
Cobertura del marco TestNG único Java y .NET Marco agnóstico

Comience con los informes predeterminados mientras el conjunto es pequeño. Pase a Informes de extensión cuando las partes interesadas solicitan paneles de control legibles y Informe de encanto cuando el historial de pruebas inestables en las compilaciones se convierte en la cuestión que importa. Cualquiera que elija, el informe normalmente lo publica el trabajo de compilación, que se cubre en el Jenkins integración continua tutorial.

Preguntas Frecuentes

La carpeta aparece solo después TestNG finaliza una ejecución y el proyecto se actualiza en el IDE. Una carpeta vacía generalmente significa que la clase se inició como un simple Java La aplicación o los oyentes predeterminados estaban desactivados, por lo que ningún reportero se ejecutó.

Sí. TestNG Escribe en test-output por defecto. Pase la opción -d en la línea de comandos o configure el directorio de salida en la configuración de ejecución del IDE o en la configuración de Maven Surefire que inicia el conjunto de pruebas.

Captura la imagen dentro de un método de escucha, como onTestFailure, guarda el archivo junto al informe y luego inserta una etiqueta de imagen HTML a través de Reporter.log. El informe renderiza el marcado, de modo que la imagen aparece junto al método que falló.

TestNG en sí mismo no envía correo. Los equipos normalmente adjuntan emailable-report.html desde un trabajo de compilación, por ejemplo un Jenkins paso de correo electrónico posterior a la compilación, o agregar una pequeña rutina de correo dentro de una implementación de IReporter.

Los modelos de IA agrupan fallos por pila.tracSe identifican similitudes, se distinguen los defectos genuinos de los fallos ambientales o de sincronización, y se prioriza qué métodos defectuosos deben inspeccionarse primero. Una larga lista de informes que se pueden enviar por correo electrónico se convierte en una cola corta y priorizada para el equipo.

Copiloto de GitHub Puede generar clases de escucha, declaraciones de Reporter.log y entradas de testng.xml a partir de un comentario breve. RevVea todas las sugerencias, porque los oyentes generados a menudo no conocen los métodos de interfaz exactos. TestNG espera.

Una vez conectado un IRetryAnalyzer, cada reintento se registra junto con el resultado final. Por lo tanto, el informe predeterminado muestra todos los intentos, de modo que una prueba inestable puede aparecer como un fallo y como un éxito en la misma ejecución.

Pasa `-usedefaultlisteners false` en la línea de comandos o establece `useDefaultListeners` en `false` en la configuración de Maven Surefire o Ant. Solo se ejecutarán los reporteros que registres explícitamente, lo que acorta el tiempo de ejecución para conjuntos de datos muy grandes.

Resumir este post con: