Configuración de Rust Cargo Test
La integración allure-cargotest se configura mediante variables de entorno.
ALLURE_RESULTS_DIR
Reemplaza el directorio predeterminado donde #[allure_test] escribe los resultados de Allure.
Cuando no está definida, allure-cargotest utiliza target/allure-results.
ALLURE_RESULTS_DIR=./allure-results cargo testALLURE_HOST_NAME
Reemplaza la etiqueta host que allure-cargotest agrega automáticamente.
Si esta variable no está definida, la integración intenta detectar el nombre del host de la máquina actual.
ALLURE_HOST_NAME=ci-linux-01 cargo testALLURE_THREAD_NAME
Reemplaza la etiqueta thread que allure-cargotest agrega automáticamente.
Si esta variable no está definida, la integración utiliza el nombre del hilo actual o el ID del hilo.
ALLURE_THREAD_NAME=worker-1 cargo testALLURE_LABEL_*
Agrega etiquetas globales a cada resultado de prueba.
Cualquier variable de entorno cuyo nombre comience con ALLURE_LABEL_ se convierte en una etiqueta de Allure. Por ejemplo:
ALLURE_LABEL_epic="Web interface" \
ALLURE_LABEL_owner="QA Team" \
cargo testEsto aplica las etiquetas epic y owner a cada prueba de la ejecución.
allure.label.*
Agrega etiquetas globales usando el esquema de nombres alternativo que algunas herramientas de CI ya utilizan.
Cualquier variable de entorno cuyo nombre comience con allure.label. se trata de la misma manera que ALLURE_LABEL_*.
allure.label.layer=e2e cargo testALLURE_TESTPLAN_PATH
Apunta a un archivo JSON que define qué pruebas deben ejecutarse.
El archivo utiliza la estructura estándar del plan de pruebas de Allure:
{
"version": "1.0",
"tests": [{ "selector": "auth::tests::login_works" }]
}Ejecuta las pruebas con:
ALLURE_TESTPLAN_PATH=./testplan.json cargo testLas entradas con selector coinciden con el nombre completo de la prueba en Rust, incluida su ruta de módulo, y funcionan con #[allure_test].
WARNING
Las entradas con id están pensadas para coincidir con pruebas que expongan un ID explícito de Allure (por ejemplo mediante #[allure_test(id = "AUTH-1")]), pero #[allure_test] actualmente no reenvía su id a la coincidencia del plan de pruebas, por lo que las entradas id no tienen efecto en pruebas basadas en macros; utiliza en su lugar entradas selector para ellas. La coincidencia por id sí funciona para integraciones que llaman directamente a CargoTestReporter::run_test_with_metadata con un allure_id explícito.
Si ALLURE_TESTPLAN_PATH no está definida, el archivo no existe o el JSON está mal formado, allure-cargotest omite el filtrado y ejecuta las pruebas normalmente.
ALLURE_LOG_ASSERTS
Controla si las llamadas a assert!, assert_eq!, assert_ne!, debug_assert!, debug_assert_eq! y debug_assert_ne! dentro de los cuerpos de función de #[allure_test] y #[step] se registran como pasos de Allure.
El registro de aserciones está habilitado de forma predeterminada. Establécelo en false para deshabilitarlo en una ejecución, anulando cualquier configuración a nivel de paquete:
ALLURE_LOG_ASSERTS=false cargo testTambién puedes deshabilitar el registro de aserciones para todo un paquete mediante los metadatos de Cargo en lugar de una variable de entorno; consulta log_asserts más abajo.
Configurar etiquetas en Cargo.toml
Utiliza los metadatos del paquete de Cargo para agregar etiquetas para ejecuciones locales y de CI sin variables de entorno. Un paquete es el paquete de Cargo definido por el Cargo.toml correspondiente.
Agregar etiquetas para todas las pruebas en un paquete
Agrega etiquetas bajo [package.metadata.allure.labels]:
[package.metadata.allure.labels]
a = "a-value"
b = ["b-value1", "b-value2"]Esto agrega a=a-value, b=b-value1 y b=b-value2 a cada #[allure_test] en el paquete. Los valores de array de cadenas agregan la misma etiqueta varias veces.
También puedes deshabilitar aquí el registro de aserciones para todo el paquete:
[package.metadata.allure]
log_asserts = falseAgregar etiquetas solo para algunos módulos de Rust
Agrega una entrada [[package.metadata.allure.modules]] por cada ruta de módulo de Rust. El valor module coincide exactamente con el module_path!() de Rust actual, o con cualquier módulo por debajo de él.
[[package.metadata.allure.modules]]
module = "org::example"
labels = { a = "a-value", b = ["b-value1", "b-value2"] }Esto se aplica a pruebas cuya ruta de módulo es org::example, org::example::api, org::example::api::v1, y así sucesivamente.
Para pruebas de integración en tests/api.rs, el archivo de prueba es su propio crate, por lo que las rutas de módulo generalmente comienzan con el nombre base del archivo:
[[package.metadata.allure.modules]]
module = "api::org::example"
labels = { a = "a-value" }Agregar etiquetas solo para archivos de prueba
Agrega una entrada [[package.metadata.allure.modules]] por cada archivo y utiliza path. La ruta es relativa a la raíz del paquete y utiliza la misma ruta de archivo por elementos que aparece en titlePath.
[[package.metadata.allure.modules]]
path = "tests/payments.rs"
labels = { a = "a-value", b = ["b-value1", "b-value2"] }Esto se aplica a cada #[allure_test] en tests/payments.rs. También puedes hacer coincidir un archivo fuente o un directorio:
[[package.metadata.allure.modules]]
path = "src/payments.rs"
labels = { component = "payments" }
[[package.metadata.allure.modules]]
path = "tests/api/"
labels = { layer = "api" }La forma de directorio (una ruta que termina en /) coincide con cada archivo de prueba cuya ruta relativa comienza con ese directorio.
Etiquetas automáticas agregadas por allure-cargotest
Cuando utilizas #[allure_test] o CargoTestReporter, allure-cargotest agrega algunas etiquetas automáticamente:
language = rustframework = cargo-testhostthread
También deriva etiquetas de suite a partir de la ruta del módulo de Rust:
- un único segmento de módulo se convierte en
suite, - dos segmentos se convierten en
parentSuiteysuite, - tres o más segmentos se convierten en
parentSuite,suiteysubSuite.
Las llamadas explícitas a allure.parent_suite(...), allure.suite(...) o allure.sub_suite(...) reemplazan las etiquetas derivadas automáticamente con el mismo nombre.