Introducción a Allure Reqnroll
Genera hermosos informes HTML utilizando Allure Report y tus pruebas de Reqnroll.
Configuración
1. Prepara tu proyecto
Instala la herramienta de línea de comandos de Allure Report, si aún no está instalada en tu sistema operativo. Ten en cuenta que Allure Report requiere Java; consulta las instrucciones de instalación.
Asegúrate de tener una versión compatible de .NET.
Allure Reqnroll requiere un framework que implemente .NET Standard versión 2.0. Puedes encontrar la lista completa de frameworks compatibles en la página de Allure.Reqnroll en NuGet.
Agrega
Allure.Reqnroll
a las dependencias de tu proyecto utilizando tu IDE o la línea de comandos.Por ejemplo, aquí tienes cómo agregar la dependencia a un proyecto con el CLI de
dotnet
:plaindotnet add ⟨PATH TO PROJECT⟩ package Allure.Reqnroll
2. Ejecuta las pruebas
Ejecuta tus pruebas de Reqnroll de la misma forma en que lo harías normalmente. Por ejemplo:
dotnet test
Esto guardará los datos necesarios en allure-results
u otro directorio, según la opción de configuración allure.directory
. Si el directorio ya existe, los nuevos archivos se agregarán a los existentes, para que un informe futuro se base en todos ellos.
3. Genera un informe
Finalmente, convierte los resultados de las pruebas en un informe HTML. Esto se puede hacer con uno de los siguientes comandos:
allure generate
procesa los resultados de las pruebas y guarda un informe HTML en el directorioallure-report
. Para ver el informe, usa el comandoallure open
.Usa este comando si necesitas guardar el informe para referencia futura o para compartirlo con colegas.
allure serve
crea el mismo informe queallure generate
, pero lo coloca en un directorio temporal y arranca un servidor web local configurado para mostrar el contenido de este directorio. El comando luego abre automáticamente la página principal del informe en un navegador web.Usa este comando si necesitas ver el informe para ti mismo y no necesitas guardarlo.
Escribiendo pruebas
El adaptador Allure Reqnroll extiende las características estándar de informes de Reqnroll al proporcionar capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección destaca las mejoras clave que puedes utilizar:
- Anotación de metadatos: Mejora los informes de pruebas con descripciones, enlaces y otros metadatos.
- Organización de pruebas: Estructura tus pruebas en jerarquías claras para mayor legibilidad y organización.
- División en pasos: Divide las pruebas en pasos más pequeños para facilitar su comprensión y mantenimiento.
- Pruebas parametrizadas: Describe claramente los parámetros para pruebas parametrizadas para especificar diferentes escenarios.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Selección de pruebas: Usa un archivo de plan de pruebas para seleccionar qué pruebas ejecutar, permitiendo una ejecución flexible de pruebas.
- Detalles del entorno: Incluye información completa del entorno que acompaña el informe de pruebas.
En la mayoría de los casos, necesitas indicar a Allure Reqnroll que una cierta propiedad debe asignarse al resultado de la prueba. La mayoría de las propiedades pueden asignarse mediante etiquetas Gherkin o la API de tiempo de ejecución.
Etiquetas Gherkin: Usa etiquetas Gherkin para asignar varios datos a un
Scenario
particular o a toda unaFeature
. Puedes configurar los patrones para esta 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.
API de tiempo de ejecución: Usa 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 de forma dinámica.
Ten en cuenta que 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.
Especificar descripción, enlaces y otros metadatos
Hay una gran cantidad de metadatos que puedes agregar a cada prueba para que aparezcan en el informe. Consulta la referencia para más detalles.
Feature: Labels
@critical
@allure.owner:JohnDoe
@allure.link:https://dev.example.com/
@allure.issue:AUTH-123
@allure.tms:TMS-456
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"
using Allure.Net.Commons;
using Reqnroll;
[Binding]
public class TestAll
{
[When("I open labels page")]
public void TestLabels()
{
AllureApi.SetDescription("This test attempts to create a label with specified title");
AllureApi.SetSeverity(SeverityLevel.critical);
AllureApi.SetOwner("John Doe");
AllureApi.AddLink("Website", "https://dev.example.com/");
AllureApi.AddIssue("AUTH-123");
AllureApi.AddTmsItem("TMS-456");
// ...
}
}
Organizar pruebas
Como se describe en Mejorando la navegación en tu informe de pruebas, Allure admite múltiples formas de organizar las pruebas en estructuras jerárquicas. Allure Reqnroll proporciona la API para asignar los campos relevantes a las pruebas ya sea agregando atributos o de forma “dinámica” (igual que para los campos de metadatos).
Para especificar la ubicación de una prueba en la jerarquía basada en el comportamiento:
@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");
// ...
}
}
Para especificar la ubicación de una prueba en la jerarquía basada en 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");
// ...
}
}
Dividir una prueba en pasos
Allure Reqnroll proporciona dos formas de crear pasos y sub-pasos: “pasos lambda” y “pasos no-op”, consulta la referencia.
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...");
// ...
});
}
}
}
Describir pruebas parametrizadas
Allure Reqnroll admite múltiples formas de implementar el patrón de pruebas parametrizadas:
- esquemas de escenarios,
- tablas de datos verticales,
- tablas de datos horizontales,
- parámetros en tiempo de ejecución.
El ejemplo a continuación muestra un archivo de configuración, un archivo Gherkin y un archivo de implementación en C# de una prueba. En este ejemplo, los cuatro parámetros para el paso “I enter my details” se mostrarán en el informe de pruebas.
{
"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()
{
// ...
}
}
Adjuntar capturas de pantalla y otros archivos
Puedes adjuntar cualquier tipo de archivo a tu informe de Allure. Por ejemplo, una forma popular de hacer que un informe sea más fácil de entender es adjuntar una captura de pantalla de la interfaz de usuario en un punto determinado.
Allure Reqnroll proporciona varias formas de crear un archivo adjunto, tanto a partir de archivos existentes como generados dinámicamente. Consulta la referencia.
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"
);
}
}
Seleccionar pruebas mediante un archivo de plan de pruebas
Si la variable de entorno ALLURE_TESTPLAN_PATH
está definida y apunta a un archivo existente, Reqnroll solo ejecutará las pruebas listadas en este archivo.
Aquí tienes un ejemplo de ejecución de pruebas según un archivo llamado testplan.json
:
export ALLURE_TESTPLAN_PATH=testplan.json
dotnet test
$Env:ALLURE_TESTPLAN_PATH = "testplan.json"
dotnet test
Información del entorno
Para la página principal del informe, puedes recopilar diversa información sobre el entorno en el que se ejecutaron las pruebas.
Por ejemplo, es una buena idea usar esto para recordar la versión del sistema operativo y la versión de .NET. Esto puede ayudar al lector futuro a investigar errores que solo son reproducibles en algunos entornos.
Para proporcionar información del entorno, coloca un archivo llamado environment.properties
en el directorio allure-results
después de ejecutar las pruebas. Consulta el ejemplo en Archivo de entorno.
Ten en cuenta que esta característica debe utilizarse para propiedades que no cambien en todas las pruebas del informe. Si tienes propiedades que pueden ser diferentes para distintas pruebas, considera usar Pruebas parametrizadas.