TestNG Tutorial: ¿Qué son las anotaciones y el marco? Selenium

¿Qué es el TestNG?

TestNG es un marco de pruebas de automatización en el que NG significa "Próxima Generación". TestNG está inspirado en JUnit que utiliza las anotaciones (@). TestNG supera las desventajas de JUnit y está diseñado para hacer pruebas de extremo a extremo fácil.

Gracias a TestNG, puede generar un informe adecuado y puede saber fácilmente cuántos casos de prueba se aprobaron, fallaron y se omitieron. Puede ejecutar los casos de prueba fallidos por separado.

Por ejemplo:

  • Supongamos que tiene cinco casos de prueba, un método está escrito para cada caso de prueba (supongamos que el programa está escrito utilizando el método principal sin utilizar testNG). Cuando ejecuta este programa primero, tres métodos se ejecutan correctamente y el cuarto método falla. Luego corrija los errores presentes en el cuarto método, ahora desea ejecutar solo el cuarto método porque los primeros tres métodos se ejecutan correctamente de todos modos. Esto no es posible sin utilizar TestNG.
  • La TestNG in Selenium Proporciona una opción, es decir, el archivo testng-failed.xml en la carpeta test-output. Si desea ejecutar solo los casos de prueba fallidos, significa que debe ejecutar este archivo XML. Se ejecutarán solo los casos de prueba fallidos.

Además del concepto anterior, aprenderá más sobre TestNG, como ¿cuáles son las ventajas de TestNG, cómo crear métodos de prueba utilizando anotaciones @test, cómo convertir estas clases en un archivo de suite de pruebas y ejecutarlas a través de eclipse y desde la línea de comandos.

Por qué usar TestNG con Selenium?

Predeterminado Selenium Las pruebas no generan un formato adecuado para los resultados de las pruebas. Usando TestNG in Selenium, podemos generar resultados de pruebas.

La mayoría de las Selenium Los usuarios usan esto más de junit por sus ventajas. Hay tantas características de TestNG, pero sólo nos centraremos en los más importantes que podemos utilizar en SeleniumA continuación se presentan las características clave de Selenium TestNG:

  • Genere el informe en un formato adecuado que incluya una cantidad de casos de prueba ejecutados, la cantidad de casos de prueba aprobados, la cantidad de casos de prueba fallidos y la cantidad de casos de prueba omitidos.
  • Se pueden agrupar varios casos de prueba más fácilmente si se convierten en un archivo testng.xml, en el que se pueden priorizar los casos de prueba que se deben ejecutar primero.
  • El mismo caso de prueba se puede ejecutar varias veces sin bucles simplemente usando la palabra clave llamada "recuento de invocaciones".
  • Usando testng, puedes ejecutar múltiples casos de prueba en múltiples navegadores, es decir, de forma cruzada. prueba del navegador.
  • La TestNG El marco se puede integrar fácilmente con herramientas como TestNG Maven, Jenkins, etc.
  • Las anotaciones utilizadas en las pruebas son muy fáciles de entender, por ejemplo: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • WebDriver no tiene ningún mecanismo nativo para generar informes. TestNG puede generar el informe en un formato legible como el que se muestra a continuación.
  • Usa TestNG con Selenium

  • TestNG simplifica la forma en que se codifican las pruebas. Ya no es necesario un método principal estático en nuestras pruebas. La secuencia de acciones está regulada por anotaciones fáciles de entender que no requieren que los métodos sean estáticos.
  • Usa TestNG con Selenium

    Usa TestNG con Selenium

  • Las excepciones no detectadas son manejadas automáticamente por TestNG sin finalizar la prueba prematuramente. Estas excepciones se informan como pasos fallidos en el informe.

Ventajas de TestNG sobre JUnit

Hay tres ventajas principales de TestNG sobre JUnit:

  • Las anotaciones son más fáciles de entender.
  • Los casos de prueba se pueden agrupar más fácilmente
  • Es posible realizar pruebas en paralelo

¿Qué es la anotación en TestNG?

Anotaciones en TestNG son líneas de código que pueden controlar cómo se ejecutará el método debajo de ellas. Siempre van precedidos del símbolo @. Un muy temprano y rápido TestNG El ejemplo es el que se muestra a continuación.

Anotación en TestNG

Las anotaciones se analizarán más adelante en la sección denominada “Anotaciones utilizadas en TestNG"Así que está perfectamente bien si no entiendes lo anterior. TestNG Ejemplo todavía. Es importante señalar por ahora que las anotaciones en TestNG son más fáciles de codificar y comprender que en JUnit.

La capacidad de ejecutar pruebas en paralelo está disponible en TestNG pero no en JUnit, Por lo que el TestNG El marco es más preferido para los probadores que usan Selenium Rejilla

Cómo escribir casos de prueba en TestNG?

Paso 1) Escriba su lógica de negocios e inserte el TestNG anotaciones en su código.
Paso 2) Agregue más información como nombre de clase, nombre de grupo, nombre de paquete, etc.
Paso 3) Ejecute el TestNG.

Crear caso de prueba usando TestNG Anotaciones

Ahora, aprenderemos cómo crear nuestro primer caso de prueba usando TestNG Anotaciones en Selenium:

Antes de crear un caso de prueba, primero debemos configurar un nuevo TestNG Proyecto en Eclipse y llámalo como “PrimeroTestNGProyecto".

Configurando un nuevo TestNG Proyectos

Paso 1: Haga clic en Archivo > Nuevo > Java Proyectos

Configurando un nuevo TestNG Proyectos

Paso 2: Escriba "PrimeroTestNGProyecto” como Nombre del proyecto y luego haga clic en Siguiente.

Configurando un nuevo TestNG Proyectos

Paso 3: Ahora comenzaremos a importar el TestNG Bibliotecas en nuestro proyecto. Haga clic en la pestaña "Bibliotecas" y luego en "Agregar biblioteca..."

Configurando un nuevo TestNG Proyectos

Paso 4: En el cuadro de diálogo Agregar biblioteca, elija "TestNG”Y haga clic en Siguiente.

Configurando un nuevo TestNG Proyectos

Paso 5: Haga clic en Finalizar.

Configurando un nuevo TestNG Proyectos

Deberías notar que TestNG está incluido en la lista de Bibliotecas.

Configurando un nuevo TestNG Proyectos

Paso 6: Ahora agregaremos los archivos JAR que contienen el Selenium API. Estos archivos se encuentran en el Java controlador de cliente que descargamos de https://www.selenium.dev/downloads/ cuando estábamos instalando Selenium y Eclipse en los capítulos anteriores.

Configurando un nuevo TestNG Proyectos

Luego, navega hasta donde has colocado el Selenium Archivos JAR.

Configurando un nuevo TestNG Proyectos

Después de agregar los JAR externos, su pantalla debería verse así.

Configurando un nuevo TestNG Proyectos

Paso 7: Haga clic en Finalizar y verifique que nuestro PrimerTestNGEl proyecto es visible en EclipseLa ventana del Explorador de paquetes.

Configurando un nuevo TestNG Proyectos

Cómo crear un nuevo TestNG Archivo de prueba

Ahora que hemos terminado de configurar nuestro proyecto en este TestNG tutorial, vamos a crear un nuevo TestNG archivo.

Paso 1: Haga clic en 'src' y elija otro.
Haga clic derecho en la carpeta del paquete "src" y luego elija Nuevo > Otro...

Crear un nuevo TestNG Archivo de prueba

Paso 2: Seleccionar TestNG clase.
Haga clic en el TestNG carpeta y seleccione “TestNG opción clase”. Haga clic en Siguiente.

Crear un nuevo TestNG Archivo de prueba

Paso 3: Escriba los valores.
Escriba los valores que se indican a continuación en los cuadros de entrada correspondientes y haga clic en Finalizar. Observe que hemos nombrado nuestro Java archivo como “PrimeroTestNGArchivo".

Crear un nuevo TestNG Archivo de prueba

Paso 4: Plantilla creada.
Eclipse debería crear automáticamente la plantilla para nuestro TestNG archivo que se muestra a continuación.

Crear un nuevo TestNG Archivo de prueba

Codificación de nuestra Primera TestNG Ejemplo de caso de prueba

Creemos ahora nuestro primer Caso de prueba eso comprobará si Mercury La página de inicio de Tours es correcta. Escriba su código como se muestra a continuación TestNG Ejemplo:

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

Tenga en cuenta lo siguiente:

  • TestNG no requiere que tengas un método main().
  • Los métodos no tienen por qué ser estáticos.
  • Usamos la anotación @Test. @Test se usa para indicar que el método que se describe a continuación es un caso de prueba.. En este caso, hemos configurado el método verificarHomepageTitle() para que sea nuestro caso de prueba, por lo que colocamos una anotación "@Test" encima.
  • Dado que utilizamos anotaciones en TestNG, necesitábamos importar el paquete org.testng.annotations.*.
  • Usamos la clase Assert. La clase Assert se utiliza para realizar operaciones de verificación en TestNGPara usarlo, necesitamos importar el paquete org.testng.Assert.

Es posible que tenga varios casos de prueba (por lo tanto, varias anotaciones @Test) en un solo TestNG archivo. Esto se abordará con más detalle más adelante en la sección “Anotaciones utilizadas en TestNG."

Ejecución de la prueba

Para ejecutar la prueba, simplemente ejecute el archivo en Eclipse como lo hace normalmente. Eclipse proporcionará dos salidas: una en la ventana de la Consola y la otra en la TestNG Ventana de resultados.

Ejecución de la prueba

Ejecución de la prueba

Comprobación de informes creados por TestNG

La ventana de la consola en Eclipse proporciona un informe basado en texto de los resultados de nuestros casos de prueba, mientras que el TestNG La ventana de resultados nos da una gráfica.

Comprobación de informes creados por TestNG

Generando informes HTML

TestNG tiene la capacidad de generar informes en formato HTML.

Paso 1: Después de ejecutar nuestro primerTestNGArchivo que creamos en la sección anterior, haga clic derecho en el nombre del proyecto (PrimeraTestNGProyecto) en la ventana del Explorador de proyectos y luego haga clic en la opción "Actualizar".

Generando informes HTML

Paso 2: Observe que se creó una carpeta de "salida de prueba". Amplíelo y busque un archivo index.html. Este archivo HTML es un informe de los resultados de la ejecución de prueba más reciente.

Generando informes HTML

Paso 3: Double-haga clic en ese archivo index.html para abrirlo dentro EclipseEl navegador web integrado de. Puede actualizar esta página en cualquier momento después de volver a ejecutar la prueba simplemente presionando F5 como en los navegadores web normales.

Generando informes HTML

Anotaciones utilizadas en TestNG

En la sección anterior, conoció la anotación @Test. Ahora, estudiaremos anotaciones más avanzadas y sus usos.

Múltiples casos de prueba

Podemos usar múltiples anotaciones @Test en una sola TestNG archivo. De forma predeterminada, los métodos anotados por @Test se ejecutan alfabéticamente. Vea el código a continuación. Aunque los métodos c_test, a_test y b_test no están ordenados alfabéticamente en el código, se ejecutarán como tales.

Anotaciones utilizadas en TestNG

Ejecute este código y en la página index.html generada, haga clic en "Vista cronológica".

Anotaciones utilizadas en TestNG

parámetros

Si desea que los métodos se ejecuten en un orden diferente, utilice el parámetro "prioridad". Los parámetros son palabras clave que modifican la función de la anotación..

  • Los parámetros requieren que les asigne un valor. Para ello, coloque un “=" al lado de ellos y luego seguido del valor.
  • Los parámetros están encerrados entre un par de paréntesis que se colocan justo después de la anotación, como el fragmento de código que se muestra a continuación.

parámetros

TestNG ejecutará la anotación @Test con el valor de prioridad más bajo hasta el más grande. No es necesario que sus valores de prioridad sean consecutivos.

parámetros

La TestNG El informe HTML confirmará que los métodos se ejecutaron según el valor ascendente de prioridad.

parámetros

Múltiples parámetros

Además de "prioridad", @Test tiene otro parámetro llamado "alwaysRun" que sólo se puede establecer en "verdadero" o "falso". Para utilizar dos o más parámetros en una sola anotación, sepárelos con una coma como el que se muestra a continuación.

@Test(priority = 0, alwaysRun = true)

Múltiples parámetros

@Antes de la prueba y @Después de la prueba

@AntesTest Los métodos bajo esta anotación serán ejecutados. antes del primer caso de prueba en el TestNG presentar.
@Después de la prueba Los métodos bajo esta anotación serán ejecutados. después de todos los casos de prueba en el TestNG el archivo se ejecuta.

Considere el código a continuación.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Aplicando la lógica presentada por la tabla y el código anterior, podemos predecir que la secuencia mediante la cual se ejecutarán los métodos es:

  • 1st – iniciar navegador()
  • 2nd – verificar el título de la página de inicio ()
  • 3rd – terminar el navegador()

La ubicación de los bloques de anotaciones se puede intercambiar sin afectar el orden cronológico en el que se ejecutarán.. entendamos con un TestNG Ejemplo e intente reorganizar los bloques de anotaciones de manera que su código se vea similar al siguiente.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

Ejecute el código anterior y observe que

Múltiples parámetros

@BeforeMethod y @AfterMethod

@Antes del método Los métodos bajo esta anotación serán ejecutados. antes de cada método en cada caso de prueba.
@Después del método Los métodos bajo esta anotación serán ejecutados. después de cada método en cada caso de prueba.

In Mercury Tours, supongamos que queremos verificar los títulos de las páginas de destino de los dos enlaces siguientes.

Múltiples parámetros

El flujo de nuestra prueba sería:

  • Vaya a la página de inicio y verifique su título.
  • Haga clic en REGISTRAR y verifique el título de su página de destino.
  • Vuelve a la página de inicio y verifica si todavía tiene el título correcto.
  • Haga clic en SOPORTE y verifique el título de su página de destino.
  • Vuelve a la página de inicio y verifica si todavía tiene el título correcto.

El siguiente código ilustra cómo se utilizan @BeforeMethod y @AfterMethod para ejecutar de manera eficiente el escenario mencionado anteriormente.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Después de ejecutar esta prueba, su TestNG Debe informar la siguiente secuencia.

Múltiples parámetros

En pocas palabras, @BeforeMethod debe contener los métodos que necesitas ejecutar. antes cada caso de prueba, mientras que @AfterMethod debe contener los métodos que necesita ejecutar después de cada caso de prueba.

Resumen de TestNG Anotaciones

@AntesSuite: El método anotado se ejecutará antes de que se hayan ejecutado todas las pruebas de este conjunto.

@DespuésSuite: El método anotado se ejecutará después de que se hayan ejecutado todas las pruebas de este conjunto.

@AntesTest: El método anotado se ejecutará antes de ejecutar cualquier método de prueba que pertenezca a las clases dentro de la etiqueta.

@Después de la prueba: El método anotado se ejecutará después de que se hayan ejecutado todos los métodos de prueba que pertenecen a las clases dentro de la etiqueta.

@AntesGrupos: La lista de grupos que este método de configuración ejecutará antes. Se garantiza que este método se ejecutará poco antes de que se invoque el primer método de prueba que pertenece a cualquiera de estos grupos.

@DespuésGrupos: La lista de grupos después de los cuales se ejecutará este método de configuración. Se garantiza que este método se ejecutará poco después de que se invoque el último método de prueba que pertenece a cualquiera de estos grupos.

@Antes de clase: El método anotado se ejecutará antes de que se invoque el primer método de prueba en la clase actual.

@Después de clases: El método anotado se ejecutará después de que se hayan ejecutado todos los métodos de prueba de la clase actual.

@Antes del método: El método anotado se ejecutará antes de cada método de prueba.

@Después del método: El método anotado se ejecutará después de cada método de prueba.

@Prueba: El método anotado es parte de un caso de prueba.

Conclusión

  • TestNG es un las pruebas marco que es capaz de hacer Selenium pruebas más fáciles de entender y de generar informes que sean fáciles de entender.
  • Las principales ventajas de TestNG sobre JUnit son los siguientes.
    • Las anotaciones son más fáciles de usar y comprender.
    • Los casos de prueba se pueden agrupar más fácilmente.
    • TestNG nos permite crear pruebas paralelas.
  • La ventana de la consola en Eclipse genera un resultado basado en texto mientras que el TestNG La ventana es más útil porque nos brinda una salida gráfica del resultado de la prueba más otros detalles significativos como:
    • Tiempos de ejecución de cada método.
    • El orden cronológico por el cual se ejecutaron los métodos.
  • TestNG es capaz de generar informes basados ​​en HTML.
  • Las anotaciones pueden usar parámetros como lo habitual. Java TestNG métodos.
  • TestNG El proveedor de datos es una forma de pasar parámetros a la función de prueba que pasa diferentes valores en casos de prueba en una sola ejecución.