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.

¿JBehave tiene alguna manera de compartir variables entre palabras clave?

Tengo una historia como esta:

Escenario: Ir a la pantalla Configuración->Ajustes->Modo de Operación del Dispositivo, establecer el modo de dispositivo a IP si no coincide
Dado que estoy en la página Configuración->Ajustes->Modo de Operación del Dispositivo
Cuando elijo “IP” si no coincide en el menú desplegable “Modo de Operación”

Entonces, la palabra clave “Cuando elijo “IP” si no coincide…” es hacer clic en el botón y cambiar mi modo a IP.

Mi pregunta es: si quiero agregar al final de la prueba un escenario que devuelva el modo de dispositivo original si ha cambiado.

Algo como esto:

Escenario: Ir a la pantalla Configuración->Ajustes-> Modo de Operación del Dispositivo, devolver el dispositivo al modo original
Dado que estoy en la página Configuración->Ajustes->Modo de Operación del Dispositivo
Entonces devuelvo el modo de operación del dispositivo al modo original

¿Cómo puedo saber cuál era el modo original?

¿JBehave tiene alguna forma de compartir variables entre palabras clave?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo experiencia personal en jbehave, pero puedo ofrecerte una posible solución a tu pregunta. Una forma de resolver este problema es usar una variable para guardar el modo de operación original del dispositivo antes de ejecutar el primer escenario. Luego puedes usar esta variable en el segundo escenario para devolver el dispositivo a su modo original. Jbehave te permite compartir variables entre pasos utilizando el mapa de contexto. Puedes almacenar el modo de dispositivo original en el contexto utilizando el paso Given del primer escenario y recuperarlo en el paso Then del segundo escenario. Aquí te dejo una posible implementación:

    Escenario: Ir a la pantalla Configuración->Configuración->Modo de operación del dispositivo, establecer el modo de dispositivo en IP si no coincide
    Dado que estoy en la página Configuración->Configuración->Modo de operación del dispositivo
    Cuando elijo "IP" si no coincide en el menú desplegable "Modo de operación"
    Entonces guardo el modo de dispositivo original
    
    Escenario: Ir a la pantalla Configuración->Configuración->Modo de operación del dispositivo, devolver el dispositivo a su modo original
    Dado que estoy en la página Configuración->Configuración->Modo de operación del dispositivo
    Cuando devuelvo el modo de operación del dispositivo al modo original
    Entonces el modo de operación del dispositivo debería ser el modo original
    

    En el primer escenario, puedes almacenar el modo de dispositivo original en el mapa de contexto utilizando el siguiente paso:

    @Dado("Guardo el modo de dispositivo original")
    public void guardarModoDispositivoOriginal() {
      String modoOriginal = driver.findElement(By.id("modoOperacion")).getText();
      getContexto().put("modoOriginal", modoOriginal);
    }
    

    En el segundo escenario, puedes recuperar el modo de dispositivo original del contexto y usarlo para devolver el dispositivo a su modo original:

    @Cuando("Devuelvo el modo de operación del dispositivo al modo original")
    public void devolverDispositivoModoOriginal() {
      String modoOriginal = (String) getContexto().get("modoOriginal");
      driver.findElement(By.id("modoOperacion")).sendKeys(modoOriginal);
    }
    
    @Entonces("El modo de operación del dispositivo debería ser el modo original")
    public void verificarModoDispositivoOriginal() {
      String modoOriginal = (String) getContexto().get("modoOriginal");
      String modoActual = driver.findElement(By.id("modoOperacion")).getText();
      assertThat(modoActual).isEqualTo(modoOriginal);
    }
    

    ¡Espero que esto te ayude!

Comments are closed.