Sintaxis básica usando Cucumber/gherkin sin morir en el intento
Buenas lectores.
Muchas veces cuando comenzamos a redactar las historias de usuario en lenguaje Gherkin y queremos automatizarlas, encontramos que algunas veces es frustrante porque salen errores que no entendemos al momento de ejecutar nuestro escenario. Es por eso que la idea de este post es darte el concepto de que debes revisar cuando te salen errores "extraños" que no te dejan ejecutar la suite de pruebas.
1 - Escenarios sin información de entrada: veamos el ejemplo
Feature: Guess the word
# The first example has two steps
Scenario: Maker starts a game
When the Maker starts a game
Then the Maker waits for a Breaker to join
Del anterior ejemplo lo más importante es:
-> Es un escenario que realiza acciones y no necesita enviar información, por lo tanto podemos ver la palabra reservada Scenario, esta se usa para cuando el escenario no necesita repetirse con diferente data.
->Las palabras reservadas Feature y Scenario proceden con : para distintiguir la palabra reservada. No se les olvide colocarlas!.
->Las palabras reservadas When, Then, And, Given, no son excluyentes, es decir, se pueden usar a medida de la necesidad, sin embargo, siempre vamos a tener como minimo un Then puesto que resalta nuestro resultado esperado.
-> El caracter numeral nos permite comentar lo que queramos dentro de la HU (feature)
2- Escenarios con información sin necesidad de repetir: veamos el ejemplo
Scenario: eat 5 out of 12
Given there are 12 cucumbers
When I eat 5 cucumbers
Then I should have 7 cucumbers
En este ejemplo podemos enviar los números desde nuestro escenario y en los steps capturamos el valor numérico, también lo podemos usar como si fueran tags/texto
3- Escenarios con información repetible: veamos el ejemplo
Scenario Outline: eating
Given there are <start> cucumbers
When I eat <eat> cucumbers
Then I should have <left> cucumbers
Examples:
| start | eat | left |
| 12 | 5 | 7 |
| 20 | 5 | 15 |
Se puede observa que es prácticamente la evolución del ejemplo 2, en este ejemplo podemos hacer varias ejecuciones que tienen la misma lógica o comportamiento con la adición de que podemos usar diferente información de entrada y por lo tanto diferentes valores de salida.
-> las palabras reservadas Scenario Outline y Examples van precedidas por : siempre y nos permiten decirle a cucumber que vamos a usar diferente información para ser repetible el escenario. No lo olviden!.
4- Escenarios que son precondiciones: veamos el ejemplo
Feature: Multiple site support
Only blog owners can post to a blog, except administrators,
who can post to all blogs.
Background:
Given a global administrator named "Greg"
And a blog named "Greg's anti-tax rants"
And a customer named "Dr. Bill"
And a blog named "Expensive Therapy" owned by "Dr. Bill"
Scenario: Dr. Bill posts to his own blog
Given I am logged in as Dr. Bill
When I try to post to "Expensive Therapy"
Then I should see "Your article was published."
Se puede observar que el escenario que funciona como precondición viene con la palabra reservada Background, esto permite que este escenario se ejecute primero que todos los escenarios que componen la HU(feature), es decir, que siempre se ejecuta primero antes de cualquier escenario cumpliendo así la precondición.
Conclusiones:
Manejar cucumber es facil desde que se tenga siempre los conceptos claros o al menos la sintaxis de las palabras reservadas, si no tenemos esto claro, pueden salir errores dificiles de entender ya que el lenguaje no los interpreta de manera clara.
Cucumber nos permite crear escenarios dinamicos con diferente información sin necesidad de crear escenarios distintos y tambien agregar escenarios que funcionan como prencondiciones para evitar la redudancia de funcionalidades.
Fuentes:
https://cucumber.io/docs/gherkin/reference/
Comentarios
Publicar un comentario