Skip to content
Allure report logoAllure Report
Main Navigation MódulosDocumentaciónStart

Español

English

Español

English

Appearance

Sidebar Navigation

Introducción

Instalación y Actualización

Instalación para Windows

Instalación para macOS

Instalación para Linux

Instalación para Node.js

Actualización

Primeros pasos

Cómo ver un informe

Mejorar la legibilidad de informes

Mejorar la navegación en informe

Funcionalidades

Pasos de prueba

Adjuntos

Estados de prueba

Ordenar y filtrar

Categorías de defectos

Análisis visual

Análisis de estabilidad de prueba

Historial y reintentos

Cronología

Exportar a CSV

Exportar métricas

Guías

Parametrización JUnit 5

JUnit 5 & Selenide: capturas de pantalla y adjuntos

JUnit 5 & Selenium: capturas de pantalla y adjuntos

Configurar JUnit 5 con GitHub Actions

Parametrización en Pytest

Pytest & Selenium: capturas de pantalla y adjuntos

Pytest & Playwright: capturas de pantalla y adjuntos

Pytest & Playwright: videos

Parametrización en Playwright

Cómo funciona

Visión general

Archivo de resultados de prueba

Archivo de contenedor

Archivo de categorías

Archivo de entorno

Archivo de ejecutor

Archivos de historial

Integraciones

Azure DevOps

Bamboo

GitHub Actions

Jenkins

IDEs de JetBrains

TeamCity

Visual Studio Code

Frameworks

Behat

Empezando

Configuración

Referencia

Behave

Empezando

Configuración

Referencia

Codeception

Empezando

Configuración

Referencia

CodeceptJS

Empezando

Configuración

Referencia

Cucumber.js

Empezando

Configuración

Referencia

Cucumber-JVM

Empezando

Configuración

Referencia

Cucumber.rb

Empezando

Configuración

Referencia

Cypress

Empezando

Configuración

Referencia

Jasmine

Empezando

Configuración

Referencia

JBehave

Empezando

Configuración

Referencia

Jest

Empezando

Configuración

Referencia

JUnit 4

Empezando

Configuración

Referencia

JUnit 5

Empezando

Configuración

Referencia

Mocha

Empezando

Configuración

Referencia

Newman

Empezando

Configuración

Referencia

NUnit

Empezando

Configuración

Referencia

PHPUnit

Empezando

Configuración

Referencia

Playwright

Empezando

Configuración

Referencia

pytest

Empezando

Configuración

Referencia

Pytest-BDD

Empezando

Configuración

Referencia

Reqnroll

Empezando

Configuración

Referencia

REST Assured

Empezando

Configuración

Robot Framework

Empezando

Configuración

Referencia

RSpec

Empezando

Configuración

Referencia

SpecFlow

Empezando

Configuración

Referencia

Spock

Empezando

Configuración

Referencia

TestNG

Empezando

Configuración

Referencia

Vitest

Empezando

Configuración

Referencia

WebdriverIO

Empezando

Configuración

Referencia

xUnit.net

Empezando

Configuración

Referencia

On this page

Referencia de Allure NUnit ​

Estos son los atributos y métodos que puedes usar para integrar tus pruebas de NUnit con Allure Report.

En la mayoría de los casos, Allure NUnit ofrece dos formas diferentes de usar una característica: la API de Atributos y la API en Tiempo de Ejecución.

  • API de Atributos: agrega un atributo de C# a un método de prueba o a una clase completa para agregar ciertos datos al resultado de la prueba. Cuando usas este enfoque, los datos se agregarán independientemente de cómo se ejecute la prueba.

  • API en Tiempo de Ejecución: usa las funciones de Allure para agregar ciertos datos al resultado de la prueba durante su ejecución. Este enfoque permite construir los datos dinámicamente.

    Ten en cuenta que se recomienda llamar a las funciones de Allure lo más cerca posible del inicio de la prueba. De esta forma, los datos se agregarán incluso si la prueba falla al principio.

Metadatos ​

Asigna la descripción, enlaces y otros metadatos a una prueba.

Title ​

  • [AllureName(string name)]
  • AllureApi.SetTestName(string name)

Establece el título de la prueba.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureName("Create labels")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.SetTestName("Create labels");
        // ...
    }
}

Description ​

  • [AllureDescription(string description)]
  • AllureApi.SetDescription(string description)

Establece la descripción de la prueba. Se permite el formato Markdown. Cualquier formato HTML, si está presente, será eliminado por razones de seguridad.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureDescription("This test attempts to create a label with specified title")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.SetDescription("This test attempts to create a label with specified title");
        // ...
    }
}

Owner ​

  • [AllureOwner(string value)]
  • AllureApi.SetOwner(string owner)

Establece el propietario de la prueba.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureOwner("John Doe")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.SetOwner("John Doe");
        // ...
    }
}

Tag ​

  • [AllureTag(params string[] tags)]
  • AllureApi.AddTags(params string[] tags)

Establece los tags de la prueba.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureTag("UI", "Labels")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.AddTags("UI", "Labels");
        // ...
    }
}

Severity ​

  • [AllureSeverity(SeverityLevel value)]
  • AllureApi.SetSeverity(SeverityLevel severity)

Establece la severidad de la prueba.

csharp
using Allure.Net.Commons;
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureSeverity(SeverityLevel.critical)]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.SetSeverity(SeverityLevel.critical);
        // ...
    }
}

Label ​

  • [AllureLabel(string label, string value, bool overwrite=false)]
  • 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 de muchas de las otras API de Allure.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureLabel("MyCustomLabel", "value")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.AddLabel("MyCustomLabel", "value");
        // ...
    }
}

ID ​

  • [AllureId(string value)]

Establece el ID de la prueba.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureId(123)]
    public void TestCreateLabel()
    {
        // ...
    }
}

Link ​

  • [AllureLink(string name, string url)]
  • [AllureIssue(string name)]
  • [AllureIssue(string name, string url)]
  • [AllureTms(string name)]
  • [AllureTms(string name, string 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.

Basado en el type (que puede ser cualquier cadena), Allure intentará cargar un patrón de enlace correspondiente para procesar la URL, según lo definido por la opción de configuración links. Si no se encuentra un patrón para el tipo dado, la URL se dejará sin modificar.

El name se usará como el texto del enlace. Si se omite, se usará la URL sin procesar en su lugar.

Para conveniencia, Allure proporciona atributos y métodos abreviados con tipos de enlace preseleccionados: issue y tms.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    [AllureLink("Website", "https://dev.example.com/")]
    [AllureIssue("UI-123")]
    [AllureTms("TMS-456")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.AddLink("Website", "https://dev.example.com/");
        AllureApi.AddIssue("UI-123");
        AllureApi.AddTmsItem("TMS-456");
        // ...
    }
}

Jerarquía basada en el comportamiento ​

  • [AllureEpic(string epic)]
  • [AllureFeature(params string[] feature)]
  • [AllureStory(params string[] story)]
  • AllureApi.AddEpic(string epic)
  • AllureApi.AddFeature(string feature)
  • AllureApi.AddStory(string story)

Asigna nombres de épicas, características o historias de usuario para una prueba, como parte de la jerarquía basada en el comportamiento de Allure.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
[AllureEpic("Web interface")]
[AllureFeature("Essential features")]
class TestLabels
{
    [Test]
    [AllureStory("Labels")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.AddEpic("Web interface");
        AllureApi.AddFeature("Essential features");
        AllureApi.AddStory("Labels");
        // ...
    }
}

Jerarquía basada en la suite ​

  • [AllureParentSuite(string parentSuite)]
  • [AllureSuite(string suite)]
  • [AllureSubSuite(string subSuite)]
  • AllureApi.AddParentSuite(string parentSuite)
  • AllureApi.AddSuite(string suite)
  • AllureApi.AddSubSuite(string subSuite)

Asigna el nombre de la suite, como parte de la jerarquía basada en suites de Allure.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
[AllureParentSuite("Web interface")]
[AllureSuite("Essential features")]
class TestLabels
{
    [Test]
    [AllureSubSuite("Labels")]
    public void TestCreateLabel()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        AllureApi.AddParentSuite("Web interface");
        AllureApi.AddSuite("Essential features");
        AllureApi.AddSubSuite("Labels");
        // ...
    }
}

Pasos de prueba ​

  • [AllureStep]
  • [AllureStep(string name)]
  • 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 pasos de prueba.

Hay tres formas de definir un paso.

  • Pasos basados en atributos

    Define un método que contenga un paso de prueba y agrega el atributo [AllureStep] a él, con un argumento name opcional (que por defecto es el nombre de la función). Cada vez que la función se llame durante la ejecución de la prueba, se creará un nuevo paso para el informe de la prueba. Si la función llama a otra función que también tiene el atributo [AllureStep], Allure Report creará un subpaso dentro del paso actual. Si la función lanza una excepción, el paso se convertirá en Fallido o Roto según el parámetro de configuración failExceptions.

    Si el nombre del paso contiene marcadores de posición (por ejemplo, {url} o {0}), se reemplazarán con los valores de los parámetros pasados a la función.

    Los argumentos pasados a la función se agregarán a la lista de parámetros del paso. Se representan de la misma manera que se describe en Pruebas parametrizadas, pero se mostrarán en el subárbol del paso actual en el informe. Usa el atributo [Name(string name)] para personalizar el nombre de un parámetro, como se muestra en el ejemplo a continuación. Usa el atributo [Skip] para no agregar un cierto parámetro al informe.

    Usa AllureLifecycle.Instance.UpdateStep() para agregar parámetros personalizados al paso actual, como se muestra en el ejemplo a continuación.

  • Pasos lambda

    Escribe un 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 modificación, y no afectará al informe. Si la función lanza una excepción, el paso se convertirá en Fallido o Roto según el parámetro de configuración failExceptions.

    Usa AllureLifecycle.Instance.UpdateStep() para agregar parámetros personalizados al paso actual, como se muestra en el ejemplo a continuación.

  • Pasos no operativos (no-op)

    Si llamas a Step() con un nombre pero sin una función lambda, Allure agregará al informe un paso no operativo. Esto permite una generación de informes estilo log dentro de una prueba o dentro de un paso más grande. Un paso no operativo finaliza inmediatamente después de haber comenzado y no puede tener subpasos, parámetros o archivos adjuntos.

csharp
using System;
using Allure.Net.Commons;
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestVisitPages()
    {
        TestDomain("https://domain1.example.com/");
        TestDomain("https://domain2.example.com/");
    }

    [AllureStep("Test {url}")]
    private void TestDomain([Name("Webpage URL")] string url)
    {
        AllureLifecycle.Instance.UpdateStep(stepResult =>
            stepResult.parameters.Add(
                new Parameter
                {
                    name = "Started at", value = DateTime.Now.ToString()
                }
            )
        );
        OpenBrowser();
        GoToWebpage(url);
        CloseBrowser();
    }

    [AllureStep("Open web browser")]
    private void OpenBrowser()
    {
        // ...
    }

    [AllureStep("Visit {url}")]
    private void GoToWebpage([Skip] string url)
    {
        // ...
    }

    [AllureStep("Close web browser")]
    private void CloseBrowser()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestMyWebsite
{
    [Test]
    public void TestVisitPages()
    {
        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...");
                // ...
            });
        }
    }
}

Fixtures de prueba ​

  • [AllureBefore(string name = null)]
  • [AllureAfter(string name = null)]
  • AllureApi.SetFixtureName(string newName)

Para agregar información sobre los métodos de configuración y limpieza (consulta la documentación de NUnit), usa los atributos [AllureBefore] o [AllureAfter].

Los métodos se mostrarán en el informe de prueba como un tipo especial de pasos. Por defecto, Allure usará los nombres de los métodos como los nombres de los pasos. Para proporcionar un nombre más legible para un fixture, pasa una cadena al atributo o llama a AllureApi.SetFixtureName() dentro de los métodos.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
public class TestLabels
{

    [OneTimeSetUp]
    [AllureBefore("Start the test server")]
    public void StartServer()
    {
        // ...
    }

    [SetUp]
    [AllureBefore("Open the browser")]
    public void StartBrowser()
    {
        // ...
    }

    [Test]
    public void TestCreateLabel()
    {
        // ...
    }

    [TearDown]
    [AllureAfter("Close the browser")]
    public void CloseBrowser()
    {
        // ...
    }

    [OneTimeTearDown]
    [AllureAfter("Shutdown the test server")]
    public void StopServer()
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
public class TestFixtures
{
    [OneTimeSetUp]
    [AllureBefore]
    public void StartServer()
    {
        AllureApi.SetFixtureName("Start the test server");
        // ...
    }

    [SetUp]
    [AllureBefore]
    public void StartBrowser()
    {
        AllureApi.SetFixtureName("Open the browser");
        // ...
    }

    [Test]
    public void Test_SetUp()
    {
        // ...
    }

    [TearDown]
    [AllureAfter]
    public void CloseBrowser()
    {
        AllureApi.SetFixtureName("Close the browser");
        // ...
    }

    [OneTimeTearDown]
    [AllureAfter]
    public void StopServer()
    {
        AllureApi.SetFixtureName("Shutdown the test server");
        // ...
    }
}

Pruebas parametrizadas ​

  • 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)
  • AllureLifecycle.Instance.AddTypeFormatter<T>(TypeFormatter<T> typeFormatter)

Para admitir el patrón de pruebas parametrizadas, Allure Report detecta automáticamente los parámetros especificados mediante el atributo [TestCase()] de NUnit y atributos similares. Además de esto, se puede usar la API de tiempo de ejecución para agregar parámetros incluso a funciones sin los atributos de NUnit.

Si el argumento excluded se establece en true, Allure no usará el parámetro al comparar el resultado de la prueba actual 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 prueba. Sin embargo, ten en cuenta que todavía es posible extraer el valor desde el directorio allure_results si lo publicas.

Por defecto, Allure Report renderiza los valores de los parámetros mediante una serialización JSON básica. Puedes sobrescribir este comportamiento para ciertos tipos implementando una clase personalizada que herede de TypeFormatter y pasando un objeto de esta clase a AddTypeFormatter().

Los parámetros pueden agregarse no solo a los resultados completos de la prueba, sino también a pasos individuales dentro de ellos, consulta Pasos de prueba para más detalles.

csharp
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [TestCase("johndoe", "qwerty")]
    [TestCase("[email protected]", "qwerty")]
    public void TestAuthentication(string login, string password)
    {
        // ...
    }
}
csharp
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestAuthenticaton
{
    [Test]
    public void TestAuthenticationWithUsername()
    {
        AllureApi.AddTestParameter("login", "johndoe");
        AllureApi.AddTestParameter("password", "qwerty", ParameterMode.Masked);
        // ...
    }

    [Test]
    public void TestAuthenticationWithEmail()
    {
        AllureApi.AddTestParameter("login", "[email protected]");
        AllureApi.AddTestParameter("password", "qwerty", ParameterMode.Masked);
        // ...
    }
}

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)

Agrega un archivo adjunto al resultado de la prueba bajo el nombre dado name.

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 de tiempo de ejecución, llama a AddAttachment() en cualquier punto durante tu prueba. Pasa ya sea el content o el path desde el cual se leerán los datos.

Para asegurarte de que el navegador web del lector mostrará los archivos adjuntos correctamente, se recomienda especificar el tipo de cada archivo adjunto. Para hacerlo, pasa el tipo de medios del contenido como type y, opcionalmente, una extensión de nombre de archivo como fileExtension. El tipo de medios afecta cómo se mostrarán los datos en el informe de prueba, mientras que la extensión del archivo se añadirá al nombre del archivo cuando el usuario quiera guardar el archivo.

csharp
using System.IO;
using System.Text;
using Allure.Net.Commons;
using Allure.NUnit;
using NUnit.Framework;

[AllureNUnit]
class TestLabels
{
    [Test]
    public void TestCreateLabel()
    {
        // ...
        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 NUnit también proporciona una función dedicada AddScreenDiff() para adjuntar comparaciones visuales.

Mostrar pruebas ignoradas ​

  • [AllureDisplayIgnored]

Por defecto, el informe de pruebas no incluirá las pruebas que fueron omitidas debido al atributo [Ignore] de NUnit. Este comportamiento se puede cambiar añadiendo el atributo [AllureDisplayIgnored] a la clase de prueba.

Si tienes una clase base común para todas tus pruebas, puedes simplemente agregar el atributo [AllureDisplayIgnored] a esa clase.

Las pruebas ignoradas tendrán el estado Omitida en el informe de prueba.

csharp
using Allure.NUnit;
using Allure.NUnit.Attributes;
using NUnit.Framework;

[AllureNUnit]
[AllureDisplayIgnored]
class TestLabels
{
    [Test]
    [Ignore("not ready yet")]
    public void TestCreateLabel()
    {
        // ...
    }
}
Pager
Previous pageConfiguración
Next pageEmpezando
Powered by

Únete a nuestro boletín

Allure TestOps
  • Visión general
  • Por qué elegirnos
  • Nube
  • Autoalojado
  • Historias de éxito
Compañía
  • Documentación
  • Blog
  • Sobre nosotros
  • Contacto
  • Eventos
© 2025 Qameta Software Inc. All rights reserved.