Looking for cucumber Keywords? Try Ask4Keywords

cucumberEmpezando con el pepino


Observaciones

Sobre el pepino

El pepino es una herramienta que ejecuta especificaciones ejecutables de software. Las especificaciones, llamadas "características", están escritas en lenguaje natural estructurado. Cucumber ejecuta una función asignando cada uno de sus pasos a una "definición de paso" escrita en el lenguaje de programación compatible con esa implementación de Cucumber. Pepino se implementa en muchos lenguajes de programación, incluidos Ruby (el original), Java y Javascript . También se traduce a muchos idiomas humanos.

Pepino fue escrito para respaldar la metodología ágil llamada Behavior-Driven Development (BDD). En BDD, uno comienza el desarrollo desde afuera entrando las pruebas de aceptación que describen la funcionalidad del software desde el punto de vista del usuario (en lugar de hacerlo desde el punto de vista de un programador, como en las pruebas unitarias). Las características del pepino sirven como estas pruebas de aceptación.

En general, las características de Cucumber son documentación legible por humanos, que también es un conjunto de pruebas ejecutables, lo que significa que la documentación y las pruebas siempre están de acuerdo. El pepino es útil para comunicarse con partes interesadas que no son programadores sobre documentación y pruebas. También permite a los programadores escribir pruebas a un nivel conceptual sin preocupaciones irrelevantes del lenguaje de programación.

El pepino se utiliza con mayor frecuencia para especificar y probar aplicaciones web, utilizando un controlador de navegador como Selenium o PhantomJS. Sin embargo, se puede usar con cualquier software que se pueda ejecutar y cuyo estado o resultados se puedan determinar a partir del lenguaje de programación que admite una implementación de Cucumber.

Otra documentación

La documentación oficial está en https://cucumber.io/docs . La documentación generada a partir de las características de Cucumber que describen las implementaciones de Cucumber se encuentra en

https://relishapp.com/explore incluye algunas otras herramientas y ejemplos relacionados con Cucumber, aunque no, desafortunadamente, Cucumber-JVM.

Este tema

Este tema solo debe dar algunos ejemplos que introducen al lector a los conceptos de pepino. Otras secciones brindarán ejemplos completos de instalación, uso de línea de comandos e IDE, características, definiciones de pasos, etc.

Una característica de pepino

Cucumber utiliza la sintaxis de Gherkin para describir los comportamientos de su software en lenguaje natural estructurado.

Como tal, Pepino no es un marco de prueba (un malentendido común), sino un marco de documentación del sistema , no muy diferente de otros como el caso de uso. El malentendido común se debe al hecho de que la documentación de Pepino se puede automatizar para garantizar que refleje el comportamiento real del sistema .

Un paquete de documentación de Cucumber está compuesto por Features , cada una de las cuales describe una característica de su software, escrita en Gherkin y alojada en su propio archivo. Al organizar esos archivos en una estructura de directorios, puede agrupar y organizar funciones:

  • bancario/
    • retiro.una característica
    • atm.feature
    • personal-loan.feature
  • comercio/
    • portfolio.feature
    • intradía.
  • hipoteca/
    • evaluación.
    • característica de contabilidad

Cada Feature es un archivo de texto sin formato compuesto por una sección de introducción opcional, no estructurada, puramente informativa y uno o más Scenarios , cada uno de los cuales representa una condición de uso o un caso de uso.

Ejemplo:

Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
    
    Scenario: search documentation on Stack Overflow
        Given I am on StackOverflow
        And I go to the Documentation section
        When I search for "cucumber"
        And I follow the link to "cucumber"
        Then I should see documentation for "cucumber"
 

Cada línea que comienza con Dado , Cuándo , Y , Pero o Entonces se llama Step . Cualquier paso puede comenzar con cualquiera de esas palabras, independientemente del orden, pero es convencional usarlas de la manera más natural posible.

Las características también se pueden organizar a través de Tags , anotaciones que el editor puede colocar en una Feature o un Scenario para categorizarlo aún más.

La ejecutabilidad de una característica se logra a través del código de cola que puede escribirse en muchos idiomas diferentes (Java, Ruby, Scala, C / C ++): cada Step se compara con el código de cola para identificar Step Definitions (comúnmente abreviadas a StepDef ) a través de expresiones regulares.

Cada Step puede tener solo una Step Definition asociada.

Cuando se ejecuta una Feature se ejecuta cada Scenario composición, lo que significa que cada StepDef que coincida con el Step s en cada Scenario se ejecuta.

Una definición de paso de pepino en rubí

En features / step_definitions / documentation.rb:

When /^I go to the "([^"]+)" documentation$/ do |section|
  path_part =
    case section
      when "Documentation"
        "documentation"
      else
        raise "Unknown documentation section: #{section}"
    end
  visit "/documentation/#{path_part}/topics"
end

Then /^I should see the "([^"]+) documentation"$/ do |section|
  expect(page).to have_css('h2.doctag_title a', text: section)
end
 

Estos pasos ejercitan una aplicación web. Son lo más simples que pueden ser al mismo tiempo que siguen siendo prácticos.

Cada paso comienza con una palabra clave Gherkin, que en un archivo de definición de paso es un método que registra un paso con Cucumber. El método de definición de pasos toma una expresión regular, que coincide con una línea en un escenario, y un bloque, que se ejecuta cuando el escenario llega a una línea coincidente. Los grupos de captura en la expresión regular se pasan al bloque como parámetros de bloque.

El paso When tiene un ejemplo simple, en línea, de pasar de una referencia legible a una página ("Documentación") a una URL. Las suites de Real Cucumber usualmente ponen esta lógica en un método separado. El método de visit es proporcionado por Capybara. Capybara no está obligada a usar Pepino, aunque es muy común que se use con él. visit le dice al navegador controlado por Capybara que visite la URL dada.

El paso Then muestra cómo se puede probar el contenido de una página. expect / to es proporcionado por RSpec (de nuevo, no es requerido por Cucumber pero se usa muy comúnmente con él). have_css es proporcionado por Capybara. La expectativa es que el selector CSS dado coincida con un elemento en la página que contiene el texto dado. Tenga en cuenta que esta expectativa fallaría si la solicitud del navegador hubiera fallado.

Para más ejemplos, vea el tema "Definición de pasos" .

Instalación de puro rubí

Para instalar Cucumber para usar con Ruby simplemente usa el comando

gem install cucumber
 

Alternativamente, si está usando un agrupador, puede agregar la siguiente línea a su Gemfile

gem 'cucumber'
 

Y luego ejecute bundler

bundle install
 

[Creo que esto pertenece a su propio tema, Instalación. Creé ese tema y copié este ejemplo allí. Cuando se apruebe ese tema, lo moveré allí y eliminaré la copia.]