Referencia de Allure Cucumber.rb
Estas son las funciones que puedes utilizar para integrar tus pruebas de Cucumber.rb con Allure.
Metadatos
Asigna la descripción, enlaces y otros metadatos a una prueba.
Description
Allure::description_html: (String html)
Establece la descripción de la prueba.
Puedes comenzar un Escenario con una descripción en tu archivo Gherkin o llamar a Allure.description_html()
para actualizarla dinámicamente.
require 'allure-cucumber'
When 'I open labels page' do
Allure.description_html 'This test attempts to create a label with specified title'
# ...
end
Feature: Labels
Scenario: Create new label for authorized user
This test attempts to create a label with specified title
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Owner
Establece el propietario de la prueba.
require 'allure-cucumber'
When 'I open labels page' do
Allure.label 'owner', 'John Doe'
# ...
end
Tag
Allure::tag: (String tag)
Establece las tags de la prueba.
Puedes usar los tags en tu archivo Gherkin o llamar a Allure.tag()
para establecer tags dinámicamente.
@authentication @important
Feature: Labels
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
require 'allure-cucumber'
When 'I open labels page' do
Allure.tag 'authentication'
Allure.tag 'important'
# ...
end
Severity
@SEVERITY:trivial
@SEVERITY:minor
@SEVERITY:normal
@SEVERITY:critical
@SEVERITY:blocker
Establece la severidad de la prueba.
Por defecto, Allure Cucumber.rb buscará una etiqueta Gherkin con el prefijo @SEVERITY:
. El prefijo puede cambiarse en la configuración.
Los valores permitidos son: “trivial”, “minor”, “normal”, “critical” y “blocker”.
Feature: Labels
@SEVERITY:critical
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Label
Allure::label: (String name, String value)
Establece una etiqueta arbitraria para la prueba. Esta es la implementación subyacente de muchas de las otras funciones de Allure.
El primer argumento de la función es el nombre de la etiqueta. Puede ser cualquier cadena.
Puedes llamar a Allure.label()
múltiples veces para crear un arreglo de valores bajo el nombre dado.
require 'allure-cucumber'
When 'I open labels page' do
Allure.label 'my custom label', 'value'
# ...
end
Link
Allure::add_link: (url: String, name: String?, type: String?)
Allure::issue: (String name, String url)
Allure::tms: (String name, String url)
@ISSUE:⟨name⟩
@TMS:⟨name⟩
Añade un enlace relacionado con la prueba.
En la API en tiempo de ejecución, puedes hacerlo llamando a la función Allure.add_link()
. El tipo
afecta el ícono que se muestra junto al enlace en el informe de la prueba. Para mayor comodidad, Allure proporciona dos funciones abreviadas con tipos de enlace preseleccionados: Allure.issue()
y Allure.tms()
.
require 'allure-cucumber'
When 'I open labels page' do
Allure.add_link url: 'https://dev.example.com/', name: 'Website'
Allure.issue 'AUTH-123', 'https://issues.example.com/AUTH-123'
Allure.tms 'TMS-456', 'https://tms.example.com/TMS-456'
# ...
end
Alternativamente, puedes agregar enlaces de problemas y enlaces TMS a través de identificadores cortos en las etiquetas Gherkin. Para habilitar esto, necesitas especificar patrones de enlace en la configuración. Allure Cucumber.rb usará los patrones para procesar las etiquetas Gherkin con prefijos específicos (por defecto @ISSUE:
y @TMS:
, pero se pueden cambiar en la configuración).
Suponiendo los patrones de enlace https://issues.example.org/{}
y https://tms.example.org/{}
, la prueba en el ejemplo a continuación tendrá un enlace de problema a https://issues.example.org/AUTH-123
y un enlace TMS a https://tms.example.org/TMS-456
.
Feature: Labels
@ISSUE:AUTH-123
@TMS:TMS-456
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Jerarquía basada en el comportamiento
Allure::epic: (String epic)
Allure::feature: (String feature)
Allure::story: (String story)
@EPIC:⟨name⟩
@FEATURE:⟨name⟩
@STORY:⟨name⟩
Asigna nombres de épicos, características o historias de usuario para una prueba, como parte de la jerarquía basada en el comportamiento de Allure.
Puedes hacerlo a través de las funciones en la API de Runtime o especificando etiquetas Gherkin con ciertos prefijos. Los prefijos por defecto son @EPIC:
, @FEATURE:
y @STORY:
, pero se pueden cambiar en la configuración. Ten en cuenta que debido a una limitación en la sintaxis de Gherkin, el valor no puede contener espacios.
require 'allure-cucumber'
When 'I open labels page' do
Allure.epic 'Web interface'
Allure.feature 'Essential features'
Allure.story 'Authentication'
# ...
end
Feature: Labels
@EPIC:WebInterface
@FEATURE:EssentialFeatures
@STORY:Authentication
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Jerarquía basada en suites
Allure::suite: (String name)
Asigna los nombres de suite principal, suite o sub-suite para una prueba, como parte de la jerarquía basada en suites de Allure.
require 'allure-cucumber'
When 'I open labels page' do
Allure.label 'parentSuite' 'Web interface'
Allure.suite 'Essential features'
Allure.label 'subSuite', 'Authentication'
# ...
end
Sub-pasos de prueba
AllureStepAnnotation::step: (name: String, status: Status?)
Allure::run_step: (String name) { (*any) -> untyped }
Allure::step: (name: String, status: Status) { (*any) -> untyped }
Define un sub-paso de prueba con el nombre dado.
Hay tres formas de definir un sub-paso.
Sub-pasos anotados
En una clase que extiende
AllureStepAnnotation
, define un método que contenga un sub-paso de prueba y agrega la anotaciónstep
a este, con un argumento opcionalname
(el valor predeterminado es el nombre del método). Cada vez que el método se llame durante la ejecución de la prueba, se creará un nuevo sub-paso dentro del paso Gherkin actual. Si el método llama a otra función que también tiene el atributostep
, Allure Report creará un sub-sub-paso, y así sucesivamente.Sub-pasos basados en bloques
Escribe un sub-paso de prueba dentro de un bloque para la función
Allure.run_step()
. Si el bloque devuelve un valor,Allure.run_step()
lo devolverá sin modificación, y no afectará al informe.Sub-pasos no-op
Si llamas a la función
Allure.step()
, Allure añadirá al informe un sub-paso no-op. Esto permite un informe estilo registro dentro de un paso más grande. Un sub-paso no-op termina inmediatamente después de que comenzó y no puede tener sub-pasos propios.El segundo argumento opcional indica el estado que se mostrará para el sub-paso en el informe. Los valores permitidos son:
:passed
(el valor predeterminado),:failed
,:broken
,:skipped
y:unknown
.
require 'allure-cucumber'
When 'I open labels page' do
Steps.step_1
Steps.step_2
end
class Steps
extend AllureStepAnnotation
step 'Step 1'
def self.step_1
step_1_1
step_1_2
end
step 'Step 1.1'
def self.step_1_1
# ...
end
step 'Step 1.2'
def self.step_1_2
# ...
end
step 'Step 2'
def self.step_2
step_2_1
step_2_2
end
step 'Step 2.1'
def self.step_2_1
# ...
end
step 'Step 2.2'
def self.step_2_2
# ...
end
end
require 'allure-cucumber'
When 'I open labels page' do
Allure.run_step 'Step 1' do
# ...
Allure.step name: 'Step 1.1', status: :passed
# ...
Allure.step name: 'Step 1.2', status: :passed
end
Allure.run_step 'Step 2' do
# ...
Allure.step name: 'Step 2.1', status: :passed
# ...
Allure.step name: 'Step 2.2', status: :passed
end
end
Pruebas parametrizadas
Un informe de prueba de Allure puede reflejar dos formas en las que puedes pasar datos de tu archivo Gherkin a tu código de implementación en Ruby, a saber:
Esquemas de escenario
En Gherkin, un Escenario con esquema
(o un Plantilla de escenario
) implementa el patrón de pruebas parametrizadas. Un esquema de escenario debe contener una tabla Examples
, de la cual Cucumber.rb carga conjuntos de parámetros, uno tras otro. Cada conjunto de parámetros se coloca en las declaraciones de los pasos según los marcadores de posición, generando así un nuevo escenario basado en la fila. Luego, Cucumber.rb ejecuta cada uno de ellos de forma independiente, como si fuera un Escenario
separado. Los datos luego pueden ser capturados por una expresión regular y pasados como argumentos separados al código Ruby.
Allure Cucumber.rb reconoce automáticamente este patrón. No se requiere configuración adicional.
El siguiente ejemplo muestra un archivo Gherkin y un archivo de implementación Ruby de una prueba. En este ejemplo, los cuatro parámetros para el paso "Yo ingreso mis detalles..." se mostrarán en ambas instancias del escenario en el informe de prueba.
Feature: User management
Scenario Outline: Registration
When I go to the registration form
And I enter my details: <login>, <password>, <name>, <birthday>
Then the profile should be created
Examples:
| login | password | name | birthday |
| johndoe | qwerty | John Doe | 1970-01-01 |
| janedoe | 123456 | Jane Doe | 1111-11-11 |
require 'allure-cucumber'
When 'I go to the registration form' do
# ...
end
And /^I enter my details: (.*), (.*), (.*), (.*)$/ do |login, password, name, birthday|
# ...
end
Then 'the profile should be created' do
# ...
end
Parámetros en tiempo de ejecución
Allure::parameter: (String nombre, String valor)
La función Allure.parameter()
puede ser utilizada en cualquier punto, incluso si el archivo Gherkin no especifica parámetros reales o tablas de datos para algún paso.
El siguiente ejemplo muestra un archivo Gherkin y un archivo de implementación Ruby de una prueba. En cuanto a Cucumber.rb se refiere, el paso "Yo ingreso mis detalles" en el ejemplo no tiene datos pasados a él, sin embargo, Allure mostrará los cuatro parámetros a nivel de la prueba.
Feature: User management
Scenario: Registration
When I go to the registration form
And I enter my details
Then the profile should be created
require 'allure-cucumber'
When 'I go to the registration form' do
# ...
end
And 'I enter my details' do
Allure.parameter 'login', 'johndoe'
Allure.parameter 'password', 'qwerty'
Allure.parameter 'name', 'John Doe'
Allure.parameter 'birthday', '1970-01-01'
# ...
end
Then 'the profile should be created' do
# ...
end
Archivos adjuntos
Allure::add_attachment: (nombre: String, fuente: Archivo | String, tipo: String, test_case: bool?)
Agrega un archivo adjunto con el nombre
dado.
El contenido se pasa en el argumento fuente
y puede ser una cadena de texto o un Archivo.
Para asegurarse de que el navegador web del lector muestre los archivos adjuntos correctamente, pase el tipo de medio adecuado del contenido como tipo
. La clase Allure::ContentType
contiene algunos tipos de medios populares, o puede usar una cadena personalizada, siempre que sea entendida por el navegador web al visualizar el informe de prueba.
Cuando se encuentra dentro de un paso de prueba, la función agrega el archivo adjunto al paso actual por defecto. Para agregarlo al resultado completo de la prueba en su lugar, pase true
al argumento opcional test_case
.
Si un paso de Gherkin tiene una tabla de datos, Allure Report la mostrará como uno de los archivos adjuntos del paso.
require 'allure-cucumber'
When 'I open labels page' do
Allure.add_attachment name: 'Screenshot',
source: File.new('/path/to/image.png'),
type: Allure::ContentType::PNG
Allure.add_attachment name: 'Data',
source: 'This is the file content.',
type: Allure::ContentType::TXT
# ...
end