Cucumber (software) (Español)
Definiciones de pasosEditar
Los pasos en los archivos .feature
de Gherkin se pueden considerar una invocación de método. Antes de Cucumber puede ejecutar un paso, se debe indicar, mediante una definición de paso, cómo se debe realizar ese paso.
Las definiciones se escriben en Ruby y se archivan convencionalmente en features/step_definitions/*_steps.rb
. Las definiciones comienzan con las mismas palabras clave que su invocación (incluida la compatibilidad con todos los idiomas de Gherkin). Cada definición toma dos argumentos
- Ya sea una expresión regular o una cadena con $ variables
- Un bloque que contiene código ruby para ejecutar
Ejemplo usando expresiones regulares
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Ejemplo usando cadenas y $ variables. Tenga en cuenta que, en tiempo de ejecución, la cadena se convierte en una expresión regular y cualquier variable $ se convierte para que coincida con (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Los hooks son la forma de Cucumber de permitir que la configuración se realice antes de ejecutar las pruebas y el desmontaje se ejecute después. Se definen como bloques Ruby ejecutables , similar a los métodos JUnit marcados con @Before, @After
anotaciones. Convencionalmente, se colocan debajo de support/
y se aplican globalmente. Existen tres tipos básicos de ganchos
-
Before
: se ejecuta antes de un escenario -
After
: se ejecuta después de un escenario -
Around
– Asume el control y corre alrededor de un escenario
Los ganchos adicionales incluyen
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Se ejecuta después de la configuración de Cucumber y se pasa un posición de la configuración
Before, After, and Around
Los ganchos toman opcionalmente una lista de escenarios de filtrado de etiquetas a los que se aplican. Una lista de etiquetas en la misma cadena se trata como OR
, mientras que los argumentos individuales se tratan como AND
; Las etiquetas se pueden negar opcionalmente si van precedidas de ~
.
Ejemplo de un gancho etiquetado antes
Before("@ATM") do |scenario| # Ruby codeend
Los enganches se utilizan a menudo para mantener el estado de la base de datos, normalmente limpiando antes de ejecutar un escenario. También es posible iniciar y revertir una transacción usando los ganchos Before
y After
, y muchas extensiones de pepino proporcionan un @txn
etiqueta para tal propósito.
Integraciones e implementacionesEditar
Existen implementaciones de Cucumber que no son Ruby para lenguajes populares, incluidos Java, JavaScript y Python. También existe soporte para marcos de prueba de integración. Se puede encontrar una lista completa de implementaciones en Cucumber. Cucumber tiene herramientas de prueba integradas que funcionan bien con muchas configuraciones de integración continua. Hay complementos de pepino para herramientas de CI populares como Jenkins y TeamCity y también para IDE como Eclipse y RubyMine.
A continuación se muestra un ejemplo de una definición de paso escrita para Java con Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Formatter pluginsEdit
Cucumber usa Formatter Plugins para proporcionar salida. Se proporcionan varios formatos comunes de forma predeterminada, incluidos
- JSON
- HTML
- JUnit
Los formatos disponibles son no estandarizado en diferentes implementaciones de Pepino, por lo que las ofertas pueden diferir. Cucumber también admite formatos de salida enriquecidos como imágenes y videos.
Automatización del navegadorEditar
Cucumber no proporciona automatización integrada del navegador. Sin embargo, funciona bien con programas existentes como Selenium y WATiR-WebDriver. Admite la ejecución de pruebas con transacciones aprovechando otros programas como ActiveRecord.
Cucumber command-lineEdit
Cucumber viene con una interfaz de línea de comandos incorporada que cubre una lista completa de instrucciones . Como la mayoría de las herramientas de línea de comando, cucumber proporciona la opción --help
que proporciona un resumen de los argumentos que acepta el comando.
La línea de comando de Cucumber se puede utilizar para ejecutar rápidamente pruebas definidas . También admite la ejecución de un subconjunto de escenarios mediante el filtrado de etiquetas.
$ cucumber --tags @tag-name
El comando anterior ayuda a ejecutar solo aquellos escenarios que tienen la especificado @tag-name
. Los argumentos se pueden proporcionar como una operación lógica de etiquetas OR
o AND
. Aparte de las etiquetas, los escenarios se pueden filtrar por nombres de escenarios.
$ cucumber --name logout
El comando anterior ejecutará solo aquellos escenarios que contengan la palabra «logout».
También es útil saber qué salió mal cuando falla una prueba. Cucumber facilita la detección de errores en el código con la opción --backtrace
.
Cucumber también se puede configurar para ignorar ciertos escenarios que no se han completado marcándolos con la etiqueta Work In Progress @wip
. Cuando a Cucumber se le pasa el argumento --wip
, Cucumber ignora los escenarios con la etiqueta @wip
.