Configuración de Allure SpecFlow
Esta página describe las opciones de configuración que afectan el comportamiento de Allure SpecFlow.
Por defecto, Allure SpecFlow intenta leer el archivo allureConfig.json
en el mismo directorio donde se encuentra el ensamblado de las pruebas. Para asegurarte de que el archivo esté presente allí, edita las propiedades del archivo en tu IDE o manualmente en tu archivo *.csproj
y establece el CopyToOutputDirectory
del ítem correspondiente en Always
o PreserveNewest
. Por ejemplo:
<Project Sdk="Microsoft.NET.Sdk">
<!-- ... -->
<ItemGroup>
<None Update="allureConfig.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
Alternativamente, utiliza la variable de entorno ALLURE_CONFIG
para especificar una ruta relativa o absoluta del archivo de configuración.
allure.directory
Ruta al directorio donde Allure SpecFlow guardará los resultados de las pruebas, consulta Cómo funciona. Si el directorio no existe, se creará. El valor predeterminado es allure-results
.
Ten en cuenta que la ruta se trata como relativa al directorio de salida de la compilación del proyecto. Al construir y ejecutar pruebas desde un IDE, esto normalmente es diferente de la carpeta de la solución. Es posible que se necesiten múltiples elementos ../
si deseas poner los resultados de las pruebas en un directorio dentro de la carpeta de la solución.
{
"allure": {
"directory": "../../../../../allure-results"
}
}
allure.links
Lista de patrones que pueden ser utilizados para construir URLs completas a partir de identificadores cortos.
Cada patrón debe ser una cadena que contenga un marcador de posición rodeado por llaves, por ejemplo: {issue}
. Al procesar un enlace, Allure SpecFlow selecciona el patrón cuyo marcador de posición coincida con el tipo de enlace (según se especifica utilizando los argumentos Link
o los patrones specflow.links
). Luego, el marcador de posición es reemplazado por el identificador corto.
Por ejemplo, con la configuración a continuación, el enlace BUG-123
de tipo issue
se traducirá a https://issues.example.com/BUG-123
.
{
"allure": {
"links": [
"https://issues.example.com/{issue}",
"https://tms.example.com/{tms}",
"https://jira.example.com/browse/{jira}"
]
}
}
allure.failExceptions
Una lista de tipos de excepciones que representan fallos de aserción.
En caso de una excepción que coincida con una de las clases listadas, se asignará el estado Fallido a la prueba, paso o fixture. En caso de cualquier otra excepción, se asignará el estado Roto. Al buscar coincidencias, Allure SpecFlow usa no solo el nombre completo de la clase de la excepción, sino también todas sus interfaces y clases base.
La lista predeterminada incluye las clases base y las interfaces que podrían ser lanzadas por varios ejecutores compatibles con SpecFlow: NUnit.Framework.AssertionException
, Xunit.Sdk.IAssertionException
, Xunit.Sdk.XunitException
, Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException
. Esta configuración, si no está vacía, sobrescribe la lista predeterminada.
Con la configuración de ejemplo a continuación, se considerará que una prueba ha fallado si lanza Xunit.Sdk.XunitException
, MyNamespace.MyCustomException
, o cualquier cosa que derive de ellas. Al mismo tiempo, cualquier otra excepción hará que la prueba se considere rota.
{
"allure": {
"failExceptions": ["Xunit.Sdk.XunitException", "MyNamespace.MyCustomException"]
}
}
specflow.stepArguments
Opciones de configuración que afectan cómo Allure SpecFlow procesa las tablas de datos encontradas en los archivos Gherkin.
La opción convertToParameters
define si Allure SpecFlow admitirá los enfoques de Tablas de datos verticales y Tablas de datos horizontales.
Para las tablas de datos verticales, las expresiones regulares paramNameRegex
y paramValueRegex
, si se proporcionan, se usan para verificar si una tabla debe considerarse una lista de parámetros de paso o no.
Por ejemplo, con la configuración a continuación, una tabla de dos columnas con las columnas “Parámetro” y “Valor” será procesada, pero una tabla con otras columnas no lo será, incluso si por casualidad tiene dos de ellas.
{
"specflow": {
"stepArguments": {
"convertToParameters": true,
"paramNameRegex": "^Parameter$",
"paramValueRegex": "^Value$"
}
}
}
specflow.grouping.behaviors
Expresiones regulares para las etiquetas de Gherkin que se pueden usar para establecer el épico y la historia de una prueba, como parte de la jerarquía basada en comportamientos de Allure.
Por ejemplo, con la configuración a continuación, una característica con la etiqueta Gherkin @allure.label.epic:UI
se añadirá al épico “UI”.
{
"specflow": {
"grouping": {
"behaviors": {
"epic": "^allure.label.epic:(.+)$",
"story": "^allure.label.story:(.+)$"
}
}
}
}
specflow.grouping.suites
Expresiones regulares para las etiquetas de Gherkin que se pueden usar para establecer las suites de una prueba, como parte de la jerarquía basada en suites de Allure.
Por ejemplo, con la configuración a continuación, una característica con la etiqueta Gherkin @allure.label.suite:TestUI
se añadirá a la suite “TestUI”.
{
"specflow": {
"grouping": {
"suites": {
"parentSuite": "^allure.label.parentSuite:(.+)$",
"suite": "^allure.label.suite:(.+)$",
"subSuite": "^allure.label.subSuite:(.+)$"
}
}
}
}
specflow.grouping.packages
Expresiones regulares para las etiquetas de Gherkin que se pueden usar para establecer el paquete, la clase y el método de una prueba, como parte de la jerarquía basada en paquetes de Allure.
Por ejemplo, con la configuración a continuación, una característica con la etiqueta Gherkin @allure.label.package:org.example.testui
se añadirá al paquete “org.example.testui”.
{
"specflow": {
"grouping": {
"packages": {
"package": "^allure.label.package:(.+)$",
"testClass": "^allure.label.class:(.+)$",
"testMethod": "^allure.label.method:(.+)$"
}
}
}
}
specflow.labels
Expresiones regulares para las etiquetas de Gherkin que se pueden usar para añadir una etiqueta arbitraria para la prueba, así como su propietario y severidad específicamente.
La expresión regular label
debe contener dos grupos de captura. Los dos textos capturados se utilizarán como el nombre y el valor de la etiqueta.
Las expresiones regulares owner
y severity
deben contener un grupo de captura. El texto capturado se utilizará como el valor de la etiqueta.
Por ejemplo, con la configuración a continuación:
- la etiqueta Gherkin
@allure.label.language=csharp
añadirá una etiqueta con el nombre “language” y el valor “csharp”, - la etiqueta Gherkin
@allure.label.owner:JohnDoe
establecerá el propietario de la prueba a “JohnDoe”, - la etiqueta Gherkin
@critical
establecerá la severidad de la prueba a “critical”.
{
"specflow": {
"labels": {
"label": "^allure.label.(.+):(.+)$"
"owner": "^allure.label.owner:(.+)$",
"severity": "^(normal|blocker|critical|minor|trivial)$",
}
}
}
specflow.links
Expresiones regulares para las etiquetas de Gherkin que se pueden usar para añadir un enlace de uno de los tipos estándar: “link”, “issue” o “tms”.
Por ejemplo, con la configuración a continuación, la etiqueta Gherkin @issue:BUG-123
añadirá un enlace “BUG-123” de tipo “issue”. Opcionalmente, luego puede ser procesado de acuerdo con los patrones de allure.links
.
{
"specflow": {
"links": {
"link": "^link:(.+)",
"issue": "^issue:(.+)",
"tms": "^tms:(.+)"
}
}
}