Pepino - Ganchos
Pepino hooknos permite administrar mejor el flujo de trabajo del código y nos ayuda a reducir la redundancia del código. Podemos decir que es un paso invisible, que nos permite realizar nuestros escenarios o pruebas.
Para comprender mejor esta noción, tomemos un ejemplo de un archivo de características y un archivo de definición de pasos.
La parte resaltada en la declaración dada realmente hace el trabajo de configurar el controlador web y finalizar la sesión del controlador web. Por lo tanto, en realidad no es relevante para la esencia de la "declaración dada", y es más como una configuración para la prueba. Además, si pensamos con una perspectiva más amplia, entonces, en el caso de múltiples escenarios para esta función, esta configuración y limpieza del controlador web se ejecutará con cada declaración dada. Lógicamente, tiene sentido que la configuración y la limpieza se ejecuten solo una vez.
Entonces, para brindar optimización, se pueden utilizar ganchos. Más a menudo utilizamos dos tipos de anzuelos: anzuelo “antes” y anzuelo “después”. El método / función / fragmento de código, definido dentro de los ganchos Antes y Después, siempre se ejecuta, incluso si el escenario pasa o falla.
Como sugiere el nombre, antes de que el gancho se ejecute mucho antes que cualquier otro escenario de prueba, y después de que el gancho se ejecute después de ejecutar todos los escenarios.
Los ganchos se definen solo en el archivo de definición de pasos.
Automaticemos un ejemplo de gancho antes y después.
Step 1 - Cree el proyecto Maven como hookTest, agregue la dependencia necesaria en pom.xml.
Step 2 - Cree un paquete de Java llamado hookTest en src/test/java
Step 3 - Cree un archivo de definición de pasos con el nombre hookTest.java debajo del paquete.
package hookTest;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class hookTest {
WebDriver driver = null;
@Before public void setUp(){
driver = new FirefoxDriver();
}
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
@After public void cleanUp(){
driver.close();
}
}
Step 4 - Cree un archivo de características llamado "hookTest.feature" debajo del paquete.
Feature - Esquema del escenario.
Scenario Outline - Prueba de gancho
El usuario dado navega a Facebook
Cuando ingreso el nombre de usuario como "<nombre de usuario>" y la contraseña como "<contraseña>"
Entonces el inicio de sesión no debería ser exitoso
Ejemplos
| username | password |
| username1 | password1 |
Step 5 - Crea un archivo de clase de corredor.
Cree la clase de corredor como runTest.java dentro del paquete dataTable (consulte el esquema del escenario de la sección para conocer los pasos más detallados).
Escribe el siguiente código.
package hookTest;
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.
Entonces, cuando ejecutemos esto, la siguiente será la secuencia de ejecución.
Antes del enganche: configure el controlador web y otros requisitos previos para ejecutar la prueba.
Declaración dada
Cuando declaración
Entonces declaración
Después del enganche: cierre el controlador web y realice el proceso de limpieza.
Ganchos etiquetados
También podemos indicar si queremos que los ganchos de antes y después se ejecuten solo con una etiqueta específica. Example- @Before ('@ Web'). El mismo concepto de etiqueta lógica y / o también se puede aplicar con ganchos.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)