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

Español

English

Español

English

Appearance

Sidebar Navigation

Allure 3

Instalación y Actualización

Instalación

Actualización

Configurar

Trabajando con Informes

Cómo generar un informe

Cómo ver un informe

Mejorar la legibilidad de informes

Mejorar la navegación en informe

Lectura de los gráficos de Allure

Migrar desde Allure 2

Allure 2

Instalación y Actualización

Instalación para Windows

Instalación para macOS

Instalación para Linux

Instalación para Node.js

Actualización

Trabajando con Informes

Cómo generar un informe

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

Entornos

Construcciones Multietapa

Categorías

Análisis visual

Análisis de estabilidad de prueba

Historial y reintentos

Quality Gate

Errores y Adjuntos Globales

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

Publicando Reportes en GitHub Pages

Allure Report 3: XCResults Reader

Cómo funciona

Visión general

Glosario

Archivo de resultados de prueba

Archivo de contenedor

Archivo de categorías

Archivo de entorno

Archivo de ejecutor

Archivos de historial

Identificadores de Prueba

Integraciones

Azure DevOps

Bamboo

GitHub Action

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

Rust Cargo Test

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 Rust Cargo Test ​

Estos son los principales bloques de construcción que puedes usar para integrar pruebas de Rust con Allure mediante allure-cargotest.

Macros ​

#[allure_test] ​

Formas compatibles:

  • #[allure_test]
  • #[allure_test(name = "Login works")]
  • #[allure_test(id = "AUTH-1")]
  • #[allure_test(name = "Login works", id = "AUTH-1")]

Usa el macro junto con #[test]:

rust
use allure_cargotest::allure_test;

#[allure_test(name = "Login works", id = "AUTH-1")]
#[test]
fn login_works() {
    allure.feature("Authentication");
    allure.story("Login with username and password");
}

Lo que hace el macro:

  • inicializa el reporter usando ALLURE_RESULTS_DIR o target/allure-results,
  • inyecta una fachada allure en el cuerpo de la prueba,
  • inicia y detiene el ciclo de vida de la prueba automáticamente,
  • aplica las etiquetas predeterminadas descritas en Configuración,
  • deriva etiquetas de suite a partir de module_path!().

Notas de comportamiento:

  • #[allure_test] actualmente solo admite funciones de prueba síncronas que devuelven (),
  • async fn no está soportado,
  • #[should_panic] está soportado,
  • #[should_panic(expected = "...")] marca la prueba como aprobada solo cuando el mensaje de pánico contiene la subcadena esperada.

#[step] ​

Formas compatibles:

  • #[step]
  • #[step(name = "Open login page")]

Usa #[step] en funciones auxiliares que quieras mostrar como pasos en el reporte:

rust
use allure_cargotest::{allure_test, step};

#[step(name = "Open login page")]
fn open_login_page() {
    // ...
}

#[allure_test]
#[test]
fn login_works() {
    open_login_page();
}

Cuando la función se ejecuta dentro de una prueba Allure activa, el adaptador inicia y detiene un paso automáticamente. Fuera de un contexto Allure activo, la función se comporta como una función Rust normal.

API de la fachada en tiempo de ejecución ​

Dentro de #[allure_test], la fachada allure proporciona métodos para las tareas de reporte más comunes.

Metadatos y etiquetas ​

  • allure.description(text)
  • allure.description_html(html)
  • allure.label(name, value)
  • allure.labels([(name, value), ...])
  • allure.owner(value)
  • allure.severity(value)
  • allure.layer(value)
  • allure.tag(value)
  • allure.tags(["smoke", "auth"])
  • allure.id(value)

Ejemplo:

rust
use allure_cargotest::allure_test;

#[allure_test]
#[test]
fn login_works() {
    allure.description("Checks that a valid user can sign in.");
    allure.owner("John Doe");
    allure.severity("critical");
    allure.label("microservice", "ui");
    allure.tags(["smoke", "auth"]);
}

Jerarquías ​

  • allure.epic(value)
  • allure.feature(value)
  • allure.story(value)
  • allure.parent_suite(value)
  • allure.suite(value)
  • allure.sub_suite(value)

Ejemplo:

rust
use allure_cargotest::allure_test;

#[allure_test]
#[test]
fn login_works() {
    allure.epic("Web interface");
    allure.feature("Authentication");
    allure.story("Login with username and password");

    allure.parent_suite("UI tests");
    allure.suite("Authentication");
    allure.sub_suite("Positive scenarios");
}

Enlaces y parámetros ​

  • allure.link(url, Some(name), Some(link_type))
  • allure.links([(url, Some(name), Some(link_type)), ...])
  • allure.issue(name, url)
  • allure.tms(name, url)
  • allure.parameter(name, value)

Ejemplo:

rust
use allure_cargotest::allure_test;

#[allure_test]
#[test]
fn login_works() {
    allure.issue("AUTH-123", "https://jira.example.com/browse/AUTH-123");
    allure.tms("TMS-456", "https://tms.example.com/cases/TMS-456");
    allure.parameter("browser", "firefox");
}

Adjuntos ​

  • allure.attachment(name, content_type, body)

Ejemplo:

rust
use allure_cargotest::allure_test;

#[allure_test]
#[test]
fn login_works() {
    allure.attachment(
        "response.json",
        "application/json",
        br#"{"status":"ok","user":"demo"}"#,
    );
}

Pasos ​

  • allure.step(name) devuelve StepGuard
  • allure.step_with(name, || { ... })
  • allure.log_step(name)
  • allure.log_step_with(name, status, error)
  • allure.step_display_name(name)
  • allure.step_parameter(name, value)

Ejemplos:

rust
use allure_cargotest::{allure_test, Status};

#[allure_test]
#[test]
fn login_works() {
    allure.step_with("Open login page", || {
        // ...
    });

    let _guard = allure.step("Submit credentials");
    // ...

    allure.log_step("Verify the page title");
    allure.log_step_with("Check audit log", Some(Status::Failed), Some("entry not found"));
}

StepGuard también te permite sobreescribir el estado final del paso antes de que el guard sea descartado:

rust
use allure_cargotest::allure_test;

#[allure_test]
#[test]
fn login_works() {
    let _guard = allure.step("Validate response").failed("Unexpected status code");
}

Integración manual con CargoTestReporter ​

Si los macros no son suficientes para tu harness de pruebas, puedes usar CargoTestReporter directamente:

rust
use allure_cargotest::CargoTestReporter;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let reporter = CargoTestReporter::new("target/allure-results")?;

    reporter.run_test("login_works", |allure| {
        allure.feature("Authentication");
        allure.parameter("browser", "firefox");
    });

    Ok(())
}

Métodos útiles:

  • CargoTestReporter::new(results_dir)
  • run_test(name, |allure| { ... })
  • run_test_with_metadata(test_name, full_name, allure_id, tags, |allure| { ... })
  • run_test_with_result(name, |allure| { ... })
  • is_selected(full_name, allure_id, tags)

Construyendo un adaptador personalizado con allure-rust-commons ​

Usa allure-rust-commons cuando necesites control de bajo nivel sobre el ciclo de vida:

rust
use allure_rust_commons::{
    AllureRuntime, FileSystemResultsWriter, StartTestCaseParams, Status,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let writer = FileSystemResultsWriter::new("target/allure-results")?;
    let runtime = AllureRuntime::new(writer);
    let lifecycle = runtime.lifecycle();

    lifecycle.start_test_case(
        StartTestCaseParams::new("login_works").with_full_name("auth::login_works"),
    );
    lifecycle.stop_test_case(Status::Passed, None);

    Ok(())
}

Los principales tipos de bajo nivel son:

  • AllureRuntime
  • AllureLifecycle
  • StartTestCaseParams
  • FileSystemResultsWriter
  • Status y StatusDetails
  • los tipos del modelo exportados desde allure_rust_commons::model
Pager
Previous pageConfiguración
Next pageEmpezando
Powered by

Suscríbete a nuestro boletín

Recibe noticias del producto que realmente necesitas, sin spam.

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