Referencia de Allure Reqnroll
Estos son los atributos y métodos que puedes usar para integrar tus pruebas de Reqnroll con Allure Report.
En la mayoría de los casos, necesitas indicar a Allure Reqnroll que una cierta propiedad debe ser asignada al resultado de la prueba. La mayoría de las propiedades pueden asignarse mediante etiquetas Gherkin o mediante la API de Runtime.
Etiquetas Gherkin: utiliza etiquetas Gherkin para asignar varios datos a un
Scenario
específico o a unaFeature
completa. Puedes configurar los patrones para dicha conversión mediante expresiones regulares en el archivo de configuración.Ten en cuenta que, debido a una limitación en la sintaxis de Gherkin, una etiqueta no puede contener espacios.
Al usar este enfoque, se garantiza que los datos se agregarán al resultado de la prueba independientemente de cómo se ejecute la prueba en sí.
API de Runtime: utiliza las funciones de Allure para agregar datos al resultado de la prueba durante la ejecución de sus pasos. Este enfoque permite construir los datos dinámicamente.
Se recomienda llamar a las funciones de Allure lo más cerca posible del inicio de la prueba. De esta manera, los datos se agregarán incluso si la prueba falla temprano.
Metadatos
Asigna descripción, enlaces y otros metadatos a una prueba.
Title
AllureApi.SetTestName(string name)
Establece el título de la prueba.
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.SetTestName("Open labels page");
// ...
}
}
Description
AllureApi.SetDescription(string description)
Establece la descripción de la prueba.
Allure Reqnroll utiliza la descripción de un escenario del archivo Gherkin, si está presente. Alternativamente, usa la API de Runtime para establecer la descripción dinámicamente.
Se permite el formato Markdown. Cualquier formato HTML, si está presente, será eliminado por motivos de seguridad.
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"
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.SetDescription("This test attempts to create a label with specified title");
// ...
}
}
Owner
@allure.owner:⟨VALUE⟩
AllureApi.SetOwner(string owner)
Establece el propietario de la prueba.
El formato para las etiquetas Gherkin está configurado a través de la opción allure.gherkinPatterns.metadata.owner
.
@allure.owner:JohnDoe
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void ThenLabels()
{
AllureApi.SetOwner("John Doe");
// ...
}
}
Tag
AllureApi.AddTags(params string[] tags)
Establece los tags de la prueba.
Cualquier etiqueta Gherkin se agrega automáticamente a la lista de tags de la prueba, a menos que coincida con una de las expresiones regulares en la configuración.
@UI @Labels
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddTags("UI", "Labels");
// ...
}
}
Severity
AllureApi.SetSeverity(SeverityLevel severity)
Establece la severidad de la prueba.
El formato para las etiquetas Gherkin se configura a través de la opción allure.gherkinPatterns.metadata.severity
.
Feature: Labels
@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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.SetSeverity(SeverityLevel.critical);
// ...
}
}
Label
@allure.label.⟨NAME⟩:⟨VALUE⟩
AllureApi.AddLabel(string name, string value)
AllureApi.AddLabel(Label label)
AllureApi.AddLabels(params Label[] labels)
Establece una etiqueta arbitraria para la prueba. Esta es la implementación subyacente para muchas de las otras APIs de Allure.
El formato para las etiquetas Gherkin se configura a través de la opción allure.gherkinPatterns.metadata.label
.
@allure.label.layer:web
@allure.label.owner:eroshenkoam
@allure.label.page:/{org}/{repo}/labels
@allure.label.jira:AE-2
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddLabel("layer", "web");
AllureApi.AddLabel("owner", "eroshenkoam");
AllureApi.AddLabel("page", "/{org}/{repo}/labels");
AllureApi.AddLabel("jira", "AE-2");
// ...
}
}
Allure ID (Allure TestOps)
@allure.label.allure_id:⟨VALUE⟩
Establece el ID de la prueba.
El formato para las etiquetas Gherkin se configura a través de la opción allure.gherkinPatterns.metadata.label
. En la etiqueta, usa allure_id
como el nombre de la etiqueta.
Feature: Labels
@allure.label.allure_id:123
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"
Link
@allure.link:⟨URL⟩
@allure.issue:⟨URL⟩
@allure.tms:⟨URL⟩
AllureApi.AddLink(string url)
AllureApi.AddLink(string name, string url)
AllureApi.AddLink(string name, string type, string url)
AllureApi.AddLinks(params Link[] links)
AllureApi.AddIssue(string url)
AllureApi.AddIssue(string name, string url)
AllureApi.AddTmsItem(string url)
AllureApi.AddTmsItem(string name, string url)
Agrega un enlace relacionado con la prueba.
Según el type
(que puede ser cualquier cadena; por defecto es “link”), Allure intentará cargar un patrón de enlace correspondiente para procesar la URL, según lo definido en la sección allure.links
del archivo de configuración. Si no se encuentra un patrón para el tipo dado, la URL no se modificará.
El name
se usará como el texto del enlace. Si se omite, se usará la URL no procesada.
Además, puedes usar la sección allure.gherkinPatterns.links
del archivo de configuración para especificar formatos para agregar enlaces de tipo “link”, “issue” y “tms” a través de etiquetas Gherkin.
@allure.link:https://dev.example.com/
@allure.issue:UI-123
@allure.tms:TMS-456
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddLink("Website", "https://dev.example.com/");
AllureApi.AddIssue("UI-123");
AllureApi.AddTmsItem("TMS-456");
// ...
}
}
Jerarquía basada en el comportamiento
@allure.epic:⟨VALUE⟩
@allure.story:⟨VALUE⟩
AllureApi.AddEpic(string epic)
AllureApi.AddFeature(string feature)
AllureApi.AddStory(string story)
Asigna nombres de épicas, características o historias de usuario a una prueba, como parte de la jerarquía basada en el comportamiento de Allure.
El formato para las etiquetas Gherkin se configura a través de las opciones allure.gherkinPatterns.grouping.behaviors
.
@allure.epic:WebInterface
Feature: Labels
@allure.story:CreateLabels
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddEpic("Web interface");
AllureApi.AddFeature("Essential features");
AllureApi.AddStory("Labels");
// ...
}
}
Jerarquía basada en la suite
@allure.parentSuite:⟨VALUE⟩
@allure.suite:⟨VALUE⟩
@allure.subSuite:⟨VALUE⟩
AllureApi.AddParentSuite(string parentSuite)
AllureApi.AddSuite(string suite)
AllureApi.AddSubSuite(string subSuite)
Asigna los nombres de suite principal, suite o sub-suite a una prueba, como parte de la jerarquía basada en suites de Allure.
El formato para las etiquetas Gherkin se configura a través de las opciones allure.gherkinPatterns.grouping.suites
.
@allure.parentSuite:WebInterface
@allure.suite:EssentialFeatures
@allure.subSuite:Labels
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddParentSuite("Web interface");
AllureApi.AddSuite("Essential features");
AllureApi.AddSubSuite("Labels");
// ...
}
}
Pasos de prueba
AllureApi.Step(string name)
AllureApi.Step(string name, Action acti
T AllureApi.Step<T>(string name, Func<T> function)
async Task AllureApi.Step(string name, Func<Task> action)
async Task<T> AllureApi.Step<T>(string name, Func<Task<T>> function)
Define los sub-pasos de la prueba con el name
dado.
Existen dos formas de definir un sub-paso.
Sub-pasos Lambda
Escribe un sub-paso de prueba en una función lambda y pásalo a
Step()
. Si la función lambda devuelve un valor,Step()
lo devolverá sin modificaciones y no afectará al informe.Usa
AllureLifecycle.Instance.UpdateStep()
para agregar parámetros personalizados al sub-paso actual, como se muestra en el ejemplo a continuación.Sub-pasos No-op
Si llamas a
Step()
con un nombre pero sin una función lambda, Allure agregará al informe un sub-paso no-op. Esto permite un estilo de informe tipo registro dentro de un paso más grande. Un sub-paso no-op finaliza inmediatamente después de haber comenzado y no puede tener parámetros, archivos adjuntos ni sub-pasos propios.
En el ejemplo a continuación, se crea un nuevo sub-paso lambda en tiempo de ejecución para cada URL de una lista. La URL se agrega a la lista de parámetros del sub-paso. Dentro de cada uno de los sub-pasos, ocurre una secuencia de tres sub-pasos no-op.
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[Then("visit pages")]
public void ThenVisitPages()
{
string[] urls =
{
"https://domain1.example.com/",
"https://domain2.example.com/"
};
foreach (string url in urls)
{
AllureApi.Step($"Test {url}", () =>
{
AllureLifecycle.Instance.UpdateStep(stepResult =>
{
stepResult.parameters.Add(
new Parameter { name = "Webpage URL", value = url }
);
});
AllureApi.Step("Opening web browser...");
// ...
AllureApi.Step($"Visiting {url}...");
// ...
AllureApi.Step("Closing web browser...");
// ...
});
}
}
}
Pruebas parametrizadas
Allure Reqnroll admite varias formas de implementar el patrón de pruebas parametrizadas:
- esquemas de escenario,
- tablas de datos verticales,
- tablas de datos horizontales,
- parámetros en tiempo de ejecución.
Esquemas de escenario
En Gherkin, un Scenario Outline
(o una Plantilla de escenario
) implementa el patrón de pruebas parametrizadas. Un esquema de escenario debe contener una tabla Examples
, de la cual Reqnroll carga conjuntos de parámetros, uno por uno. Cada conjunto de parámetros se coloca en las declaraciones de paso según los marcadores de posición, generando así un nuevo escenario basado en la fila. Reqnroll luego ejecuta cada uno de ellos independientemente, como si fuera un Scenario
separado. Los datos pueden ser capturados mediante una expresión regular y pasados como argumentos separados al código C#.
Allure Reqnroll reconoce automáticamente este patrón. No se requiere configuración adicional.
El ejemplo a continuación muestra un archivo Gherkin y un archivo de implementación C# de una prueba. En este ejemplo, los cuatro parámetros para el paso “Introduzco 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 |
using System;
using Reqnroll;
[Binding]
public class Steps
{
[When("I go to the registration form")]
public void WhenIGoToTheRegistrationForm()
{
// ...
}
[When(@"I enter my details: (.*), (.*), (.*), (.*)")]
public void WhenIEnterMyDetails(
string login, string password, string name, DateTime birthday)
{
// ...
}
[Then("the profile should be created")]
public void ThenTheProfileShouldBeCreated()
{
// ...
}
}
Tablas de datos verticales
Si la declaración de un paso de Gherkin contiene una tabla de datos con dos columnas, Allure Reqnroll puede mostrar su contenido como los parámetros a nivel de paso. Este comportamiento solo se aplica cuando las columnas de la tabla están nombradas de una cierta manera, por ejemplo, “Parámetro” y “Valor”.
La funcionalidad es opcional. Para habilitarla, edita la sección allure.gherkinPatterns.stepArguments
del archivo de configuración, incluyendo las expresiones regulares para los encabezados.
Los datos de la tabla en sí se pasan al código C# sin modificaciones.
El ejemplo a continuación muestra un archivo de configuración, un archivo Gherkin y un archivo de implementación C# de una prueba. En este ejemplo, los cuatro parámetros para el paso “Introduzco mis detalles” se mostrarán en el informe de prueba.
{
"allure": {
"gherkinPatterns": {
"stepArguments": {
"createFromDataTables": true,
"nameColumn": "^Parameter$",
"valueColumn": "^Value$"
}
}
}
}
Feature: User management
Scenario: Registration
When I go to the registration form
And I enter my details
| Parameter | Value |
| login | johndoe |
| password | qwerty |
| name | John Doe |
| birthday | 1970-01-01 |
Then the profile should be created
using Reqnroll;
[Binding]
public class Steps
{
[When("I go to the registration form")]
public void WhenIGoToTheRegistrationForm()
{
// ...
}
[When("I enter my details")]
public void WhenIEnterMyDetails(Table table)
{
// ...
}
[Then("the profile should be created")]
public void ThenTheProfileShouldBeCreated()
{
// ...
}
}
Tablas de datos horizontales
Si la declaración de tu paso de Gherkin contiene una tabla de datos con una fila, Allure Reqnroll puede mostrar su contenido como los parámetros a nivel de paso.
La funcionalidad es opcional. Para habilitarla o deshabilitarla, edita la opción de configuración allure.gherkinPatterns.stepArguments.createFromDataTables
.
Los datos de la tabla en sí se pasan al código C# sin modificaciones.
El ejemplo a continuación muestra un archivo de configuración, un archivo Gherkin y un archivo de implementación C# de una prueba. En este ejemplo, los cuatro parámetros para el paso “Introduzco mis detalles” se mostrarán en el informe de prueba.
{
"allure": {
"gherkinPatterns": {
"stepArguments": {
"createFromDataTables": true,
"nameColumn": "^Parameter$",
"valueColumn": "^Value$"
}
}
}
}
Feature: User management
Scenario: Registration
When I go to the registration form
And I enter my details
| login | password | name | birthday |
| johndoe | qwerty | John Doe | 1970-01-01 |
Then the profile should be created
using Reqnroll;
[Binding]
public class Steps
{
[When("I go to the registration form")]
public void WhenIGoToTheRegistrationForm()
{
// ...
}
[When("I enter my details")]
public void WhenIEnterMyDetails(Table table)
{
// ...
}
[Then("the profile should be created")]
public void ThenTheProfileShouldBeCreated()
{
// ...
}
}
Parámetros en tiempo de ejecución
AllureApi.AddTestParameter(string name, object? value)
AllureApi.AddTestParameter(string name, object? value, ParameterMode mode)
AllureApi.AddTestParameter(string name, object? value, bool excluded)
AllureApi.AddTestParameter(string name, object? value, ParameterMode mode, bool excluded)
AllureApi.AddTestParameter(Parameter parameter)
La función AddTestParameter()
puede usarse en cualquier momento, incluso si el archivo Gherkin no especifica parámetros o tablas de datos para algún paso.
Si el argumento excluded
se establece en true, Allure no usará el parámetro al comparar el resultado actual de la prueba con el anterior en el historial. Este argumento solo es utilizado por Allure TestOps.
El argumento mode
afecta cómo se mostrará el parámetro en el informe. Las opciones disponibles están definidas en la enumeración ParameterMode
:
ParameterMode.Default
(igual que no especificar ningún modo) — el parámetro y su valor se mostrarán en una tabla junto con otros parámetros.ParameterMode.Masked
— el parámetro se mostrará en la tabla, pero su valor estará oculto. Usa este modo para contraseñas, tokens y otros parámetros sensibles.ParameterMode.Hidden
— el parámetro y su valor no se mostrarán en el informe de la prueba. Sin embargo, ten en cuenta que aún es posible extraer el valor del directorioallure_results
si lo publicas.
El ejemplo a continuación muestra un archivo Gherkin y un archivo de implementación C# de una prueba. En lo que respecta a Reqnroll, el “Introduzco mis detalles” en el ejemplo no tiene ningún dato pasado, sin embargo, Allure mostrará los cuatro parámetros a nivel de prueba.
Feature: User management
Scenario: Registration
When I go to the registration form
And I enter my details
Then the profile should be created
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I go to the registration form")]
public void WhenIGoToTheRegistrationForm()
{
// ...
}
[When("I enter my details")]
public void WhenIEnterMyDetails()
{
AllureApi.AddTestParameter("login", "johndoe");
AllureApi.AddTestParameter("password", "qwerty");
AllureApi.AddTestParameter("name", "John Doe");
AllureApi.AddTestParameter("birthday", "1970-01-01");
// ...
}
[Then("the profile should be created")]
public void ThenTheProfileShouldBeCreated()
{
// ...
}
}
Archivos adjuntos
AllureApi.AddAttachment(string name, string type, string path)
AllureApi.AddAttachment(string name, string type, byte[] content, string fileExtension = "")
AllureApi.AddAttachment(string path, string? name = null)
AllureApi.AddScreenDiff(string expectedPng, string actualPng, string diffPng)
Añadir un archivo adjunto al resultado de la prueba bajo el nombre dado.
TIP
Puedes usar los datos producidos por cualquier función, no necesariamente leídos desde un archivo real.
Para crear un archivo adjunto usando la API en tiempo de ejecución, llama a AddAttachment()
en cualquier punto durante tu prueba. Pasa el content
o el path
desde el cual se leerán los datos.
Para asegurar que el navegador web del lector muestre los archivos adjuntos correctamente, se recomienda especificar el tipo de cada archivo adjunto. Para hacerlo, pasa el tipo de medio del contenido como type
y, opcionalmente, una extensión de nombre de archivo como fileExtension
. El tipo de medio afecta cómo se mostrarán los datos en el informe de prueba, mientras que la extensión del nombre de archivo se agrega al nombre del archivo cuando el usuario desea guardar el archivo.
using System.IO;
using System.Text;
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class Steps
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.AddAttachment(
"data.txt",
"text/plain",
Encoding.UTF8.GetBytes("This is the file content.")
);
AllureApi.AddAttachment(
"image1.png",
"image/png",
File.ReadAllBytes("/path/to/image1.png")
);
AllureApi.AddAttachment(
"image2.png",
"image/png",
"/path/to/image2.png"
);
}
}
Allure Reqnroll también proporciona una función dedicada AddScreenDiff()
para adjuntar comparaciones visuales.