TestNG Tutorial

ยฟQuรฉ es 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.

El uso de 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.
  • El 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.
  • El 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 mรกs del JUnit

Hay tres ventajas principales de TestNG mรกs del 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 el 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 .

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: Seleccione TestNG clase.
Haga clic en el elemento 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 = "https://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

El 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 = "https://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 = "https://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 = "https://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 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 mรกs del 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.

Resumir este post con: