Pepino - Tablas de datos

Mientras trabajamos en la automatización, podemos enfrentar una variedad de escenarios. Cada escenario tiene un significado y necesidades diferentes.

Desde el principio, hemos estado tomando un ejemplo de funcionalidad de inicio de sesión para un sitio de redes sociales, donde solo teníamos que pasar dos parámetros de entrada. Pensemos en alguna posibilidad más. ¿Qué hay de la funcionalidad "Registro de nuevo usuario"? Normalmente, ¿cuáles pueden ser los parámetros de entrada al registrar un nuevo usuario en un sitio de redes sociales? Algo como lo siguiente:

  • Nombre de usuario
  • Dirección de correo electrónico
  • Password
  • Escriba la contraseña otra vez
  • Birthdate
  • Gender
  • Número de teléfono

Feature - Registro de nuevo usuario.

Verifique que el registro de nuevo usuario no sea exitoso después de pasar las entradas incorrectas.

Dado que estoy en una nueva página de registro de usuario.

Cuando ingreso el nombre de usuario y una dirección de correo electrónico como dirección de correo electrónico y contraseña como, y vuelvo a ingresar la contraseña como y Fecha de nacimiento como y Sexo como y número de teléfono, entonces el registro de usuario no debería ser exitoso.

Parece un poco desordenado a primera vista. Entonces, ¿hay alguna manera mejor de administrar tal cantidad de entradas? La respuesta puede ser "Tabla de datos". La tabla de datos es un conjunto de entradas que se proporcionarán para una sola etiqueta. Esta etiqueta puede ser GIVEN, WHEN o THEN.

Escribamos el escenario anterior con la ayuda de la tabla de datos y se verá así:

Dado que estoy en una nueva página de registro de usuario

Cuando ingreso datos válidos en la página

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Entonces el registro de usuario debería ser exitoso.

Ejemplo

Automaticemos un ejemplo de una tabla de datos.

Step 1 - Cree un proyecto de prueba de Maven llamado "DataTableTest".

  • Vaya a Archivo → Nuevo → Otros → Maven → Proyecto Maven → Siguiente.

  • Proporcionar group Id (La identificación del grupo identificará su proyecto de manera única en todos los proyectos).

  • Proporcionar artifact Id (Artifact Id es el nombre del jar sin versión. Puede elegir cualquier nombre que esté en minúsculas).

  • Haga clic en Finalizar.

  • Abrir pom.xml -

    • Vaya al explorador de paquetes en el lado izquierdo de Eclipse.

    • Expanda el proyecto CucumberTest.

    • Busque el archivo pom.xml.

    • Haga clic derecho y seleccione la opción Abrir con “Editor de texto”.

  • Agregar dependencia para Selenium: esto indicará Maven, qué archivos jar de Selenium se descargarán del repositorio central al repositorio local.

    • Abrir pom.xml está en modo de edición, crear etiqueta de dependencias (<dependencies> </dependencies>), dentro de la etiqueta del proyecto.

    • Dentro de la etiqueta de dependencias, cree la etiqueta de dependencia. (<dependencia> </dependencia>).

    • Proporcione la siguiente información dentro de la etiqueta de dependencia.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Agregar dependencia para Cucumber-Java: esto indicará Maven, qué archivos de Cucumber se descargarán desde el repositorio central al repositorio local.

    • Cree una etiqueta de dependencia más.

    • Proporcione la siguiente información dentro de la etiqueta de dependencia.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Agregar dependencia para Cucumber-JUnit: esto indicará Maven, qué archivos de Cucumber JUnit se deben descargar del repositorio central al repositorio local.

    • Cree una etiqueta de dependencia más.

    • Proporcione la siguiente información dentro de la etiqueta de dependencia.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Agregar dependencia para JUnit: esto indicará Maven, qué archivos JUnit se deben descargar del repositorio central al repositorio local.

    • Cree una etiqueta de dependencia más.

    • Proporcione la siguiente información dentro de la etiqueta de dependencia

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Verifique los binarios.

    • Una vez que pom.xml se haya editado correctamente, guárdelo.

    • Vaya a Proyecto → Limpiar: le llevará unos minutos.

Step 2 - Crea un paquete llamado dataTable debajo src/test/java

Step 3 - Cree un archivo de características.

  • Cree un archivo de características, llamado dataTable.feature dentro del paquete dataTable (consulte el esquema del escenario de la sección para conocer los pasos más detallados).

  • Escribe el siguiente texto.

    Feature - Tabla de datos

    Verifique que el registro de nuevo usuario no sea exitoso después de pasar entradas incorrectas.

    Scenario:

    Dado que estoy en la página de registro de nuevo usuario

    Cuando ingreso datos no válidos en la página

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Entonces el registro de usuario no debería ser exitoso

  • Guarda el archivo.

Step 4 - Crear archivo de definición de pasos.

  • Cree el archivo de definición de pasos denominado 'dataTable.java' dentro del paquete dataTable (consulte el esquema del escenario de la sección para obtener pasos más detallados).

  • Escribe el siguiente código.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 
import cucumber.table.DataTable; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") 
   public void goToFacebook() { 
      //Intiate web browser instance. driver = new FirefoxDriver();
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • Guarda el archivo.

Step 5 - Crea un archivo de clase de corredor.

  • Cree una clase de corredor denominada runTest.java dentro del paquete.

  • Escribe el siguiente código.

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Guarda el archivo.

  • Ejecute la prueba usando la opción

    • Seleccione el archivo runTest.java del explorador de paquetes.

    • Haga clic con el botón derecho y seleccione la opción Ejecutar como.

    • Seleccione prueba JUnit.

Puede observar las siguientes cosas después de una ejecución exitosa.

  • Se carga el sitio web de Facebook.

  • Los datos se ingresarán en la página de registro.

  • Se hará clic en el botón Enviar.

  • Veremos que la página de inicio no se mostrará y se escribirá "Test Pass" en la consola.