Selenio - TestNG

TestNG es un poderoso marco de prueba, una versión mejorada de JUnit que estuvo en uso durante mucho tiempo antes de que TestNG existiera. NG significa 'Próxima Generación'.

El marco TestNG proporciona las siguientes características:

  • Las anotaciones nos ayudan a organizar las pruebas fácilmente.
  • Configuración de prueba flexible.
  • Los casos de prueba se pueden agrupar más fácilmente.
  • La paralelización de las pruebas se puede lograr utilizando TestNG.
  • Soporte para pruebas basadas en datos.
  • Informes incorporados.

Instalación de TestNG para Eclipse

Step 1 - Inicie Eclipse y seleccione 'Instalar nuevo software'.

Step 2 - Ingrese la URL como 'http://beust.com/eclipse' y haga clic en 'Agregar'.

Step 3- Se abre el cuadro de diálogo 'Agregar repositorio'. Ingrese el nombre como 'TestNG' y haga clic en 'Aceptar'

Step 4 - Haga clic en 'Seleccionar todo' y se seleccionará 'TestNG' como se muestra en la figura.

Step 5 - Haga clic en 'Siguiente' para continuar.

Step 6 - Revise los elementos seleccionados y haga clic en 'Siguiente'.

Step 7 - "Acepte el contrato de licencia" y haga clic en 'Finalizar'.

Step 8 - TestNG comienza a instalarse y el progreso se mostrará a continuación.

Step 9- Aparece una advertencia de seguridad porque no se puede establecer la validez del software. Haga clic en Aceptar'.

Step 10- El instalador solicita reiniciar Eclipse para que los cambios surtan efecto. Haga clic en "Sí".

Anotaciones en TestNG

Las anotaciones se agregaron formalmente al lenguaje Java en JDK 5 y TestNG tomó la decisión de usar anotaciones para anotar las clases de prueba. A continuación, se muestran algunos de los beneficios de usar anotaciones. Se puede encontrar más sobre TestNGhere

  • TestNG identifica los métodos que le interesan buscando anotaciones. Por lo tanto, los nombres de los métodos no están restringidos a ningún patrón o formato.

  • Podemos pasar parámetros adicionales a las anotaciones.

  • Las anotaciones están fuertemente tipadas, por lo que el compilador marcará cualquier error de inmediato.

  • Las clases de prueba ya no necesitan extender nada (como TestCase, para JUnit 3).

No Señor. Anotación y descripción
1

@BeforeSuite

El método anotado se ejecutará solo una vez antes de que se hayan ejecutado todas las pruebas de esta suite.

2

@AfterSuite

El método anotado se ejecutará solo una vez después de que se hayan ejecutado todas las pruebas de esta suite.

3

@BeforeClass

El método anotado se ejecutará solo una vez antes de que se invoque el primer método de prueba de la clase actual.

4

@AfterClass

El método anotado se ejecutará solo una vez después de que se hayan ejecutado todos los métodos de prueba de la clase actual.

5

@BeforeTest

El método anotado se ejecutará antes de que se ejecute cualquier método de prueba que pertenezca a las clases dentro de la etiqueta <test>.

6

@AfterTest

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

7

@BeforeGroups

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.

8

@AfterGroups

La lista de grupos tras los que 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 pertenezca a cualquiera de estos grupos.

9

@BeforeMethod

El método anotado se ejecutará antes de cada método de prueba.

10

@AfterMethod

El método anotado se ejecutará después de cada método de prueba.

11

@DataProvider

Marca un método como fuente de datos para un método de prueba. El método anotado debe devolver un Objeto [] [] donde a cada Objeto [] se le puede asignar la lista de parámetros del método de prueba. El método @Test que quiere recibir datos de este DataProvider necesita usar un nombre de DataProvider igual al nombre de esta anotación.

12

@Factory

Marca un método como una fábrica que devuelve objetos que serán utilizados por TestNG como clases de prueba. El método debe devolver Object [].

13

@Listeners

Define oyentes en una clase de prueba.

14

@Parameters

Describe cómo pasar parámetros a un método @Test.

15

@Test

Marca una clase o un método como parte de la prueba.

Configuración de TestNG-Eclipse

Step 1 - Inicie Eclipse y cree un 'Nuevo proyecto Java' como se muestra a continuación.

Step 2 - Ingrese el nombre del proyecto y haga clic en 'Siguiente'.

Step 3 - Vaya a la pestaña "Bibliotecas" y agregue el archivo JAR del servidor de control remoto de Selenium haciendo clic en "Agregar JAR externos" como se muestra a continuación.

Step 4- El archivo JAR agregado se muestra aquí. Haga clic en 'Agregar biblioteca'.

Step 5- Se abre el cuadro de diálogo 'Agregar biblioteca'. Seleccione 'TestNG' y haga clic en 'Siguiente' en el cuadro de diálogo 'Agregar biblioteca'.

Step 6 - Se agrega la biblioteca 'TestNG' agregada y se muestra como se muestra a continuación.

Step 7 - Al crear el proyecto, la estructura del proyecto quedaría como se muestra a continuación.

Step 8 - Haga clic derecho en la carpeta 'src' y seleccione Nuevo >> Otro.

Step 9 - Seleccione 'TestNG' y haga clic en 'Siguiente'.

Step 10 - Seleccione el nombre de la 'Carpeta de origen' y haga clic en 'Aceptar'.

Step 11 - Seleccione el 'Nombre del paquete', el 'nombre de la clase' y haga clic en 'Finalizar'.

Step 12 - Se mostrarían el Explorador de paquetes y la clase creada.

Primera prueba en TestNG

Ahora comencemos a crear scripts usando TestNG. Hagamos un script para el mismo ejemplo que usamos para comprender el WebDriver. Usaremos la aplicación de demostración, www.calculator.net , y realizaremos una calculadora de porcentaje.

En la siguiente prueba, notará que NO existe un método principal, ya que testNG conducirá el flujo de ejecución del programa. Después de inicializar el controlador, ejecutará el método '@BeforeTest' seguido de '@Test' y luego '@AfterTest'. Tenga en cuenta que puede haber cualquier número de anotaciones '@Test' en una clase, pero '@BeforeTest' y '@AfterTest' solo pueden aparecer una vez.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

Ejecución

Para ejecutar, haga clic derecho en el XML creado y seleccione "Ejecutar como" >> "TestNG Suite"

Análisis de resultados

La salida se envía a la consola y aparecerá como se muestra a continuación. La salida de la consola también tiene un resumen de ejecución.

El resultado de TestNG también se puede ver en una pestaña diferente. Haga clic en el botón 'Vista de informe HTML' como se muestra a continuación.

El resultado HTML se mostrará como se muestra a continuación.