es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Podemos crear una variable a nivel de característica o global en los archivos de características de Cucumber (Java)?

¿Hay alguna manera de crear una variable común en el nivel del archivo de características y usarla en varios escenarios en lugar de codificarla como se muestra a continuación para cada paso en los archivos de características de Cucumber utilizando Java?

eg:
Característica: Prueba
Escenario: escenario 1
  Dado un usuario
  Cuando se envía una petición GET a "url"
  Entonces el código de respuesta es 200

Escenario: escenario 2
  Dado un usuario
  Cuando se envía una petición GET a "url"
  Entonces el código de respuesta es 200

Quiero hacer algo como esto:

eg:
Característica: Prueba
global<em>variable</em>url=url
Escenario: escenario 1
  Dado un usuario
  Cuando se envía una petición GET a "<><em>variable</em>url>"
  Entonces el código de respuesta es 200

Escenario: escenario 2
  Dado un usuario
  Cuando se envía una petición GET a "<><em>variable</em>url>"
  Entonces el código de respuesta es 200
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una variable común a nivel del archivo de características y utilizarla en diferentes escenarios en lugar de codificarla para cada paso. En Cucumber-JVM, podemos hacer uso de Scenario Outline y Examples junto con Scenario Hooks para lograr esto.

    Scenario Outline nos permite definir una plantilla para el escenario con marcadores de posición para los valores de entrada. La sección de Ejemplos debajo de Scenario Outline define los valores de entrada que se utilizarán en los escenarios.

    Los Scenario Hooks se pueden utilizar en varios niveles, como Característica, Escenario y Paso, para ejecutar código antes o después de cada uno de estos niveles. Podemos hacer uso de los hooks @Antes y @Después para establecer y reiniciar el valor de la variable global.

    Aquí tienes un ejemplo:

    Característica: Prueba
    
      Antecedentes:
        Dado un usuario
        Y una variable global url
    
      Esquema del escenario: escenario 1
        Cuando se envía una solicitud GET a "<url>"
        Entonces el código de respuesta es 200
    
        Ejemplos:
        | url          |
        | google.com   |
        | example.com  |
    
      Esquema del escenario: escenario 2
        Cuando se envía una solicitud GET a "<url>"
        Entonces el código de respuesta es 200
    
        Ejemplos:
        | url          |
        | google.com   |
        | example.com  |
    

    En el ejemplo anterior, hemos definido una sección de Antecedentes donde establecemos el valor inicial de la variable global url. Luego, utilizamos Scenario Outline para definir la plantilla para los escenarios con las variables marcadoras de posición. La sección de Ejemplos define los valores de entrada para las variables.

    Al comienzo de cada escenario, se ejecuta el hook @Antes, donde podemos establecer el valor de la variable global en función del valor de entrada de la sección de Ejemplos. Al final de cada escenario, se ejecuta el hook @Después, donde podemos restablecer el valor de la variable global a su valor original.

    Aquí tienes el código Java para las Definiciones de Pasos y Ganchos:

    public class StepDefinitions {
    
      private String url; // variable global
    
      @Given("un usuario")
      public void aUser() {
        // implementación
      }
    
      @Given("una variable global url")
      public void aGlobalVariableUrl() {
        this.url = null; // inicializar en null
      }
    
      @When("se envía una solicitud GET a {string}")
      public void getRequestIsSentTo(String url) {
        // implementación
      }
    
      @Then("el código de respuesta es {int}")
      public void responseCodeIs(int responseCode) {
        // implementación
      }
    
      @Before
      public void before(Scenario scenario) {
        // establecer el valor de la variable global en función de la entrada
        this.url = scenario.getName(); 
      }
    
      @After
      public void after(Scenario scenario) {
        // restablecer el valor de la variable global a su valor original
        this.url = null;
      }
    }
    

    En el código anterior, hemos definido las Definiciones de Pasos para los escenarios e implementado los hooks @Antes y @Después para establecer y restablecer el valor de la variable global.

    Nota: El ejemplo anterior es solo una forma de lograr esto. Dependiendo de los requisitos específicos y la implementación, puede haber enfoques o modificaciones diferentes necesarios.

Comments are closed.