Primeros pasos con Allure Reqwest
Captura peticiones y respuestas HTTP de reqwest como adjuntos en tus reportes de pruebas de Allure Report.
allure-reqwest funciona con cualquier integración de pruebas de Rust que proporcione una fachada de Allure — actualmente Rust Cargo Test — o directamente con allure-rust-commons.
INFO
El repositorio oficial allure-rust también publica allure-diesel para registrar las consultas Diesel ejecutadas como pasos de Allure.
Configuración
Asegúrate de tener configurada una integración de Allure para tu ejecutor de pruebas. Consulta Rust Cargo Test.
Elige un estilo de integración y añade la dependencia.
Middleware — recomendado para una captura amplia con cambios mínimos en el sitio de la llamada. Envuelve un
reqwest_middleware::ClientWithMiddleware, de modo que las peticiones siguen usando un cliente al estilo de reqwest mientras Allure las registra automáticamente. Requiere la característicamiddlewarey el cratereqwest-middleware:bashcargo add allure-reqwest --features middleware cargo add reqwest-middlewarerustuse allure_reqwest::AllureReqwestMiddleware; use reqwest_middleware::ClientBuilder; async fn create_order(allure: allure_rust_commons::AllureFacade) -> reqwest::Result<()> { let client = ClientBuilder::new(reqwest::Client::new()) .with(AllureReqwestMiddleware::new(allure)) .build(); let response = client .post("https://api.example.com/v1/orders") .header("content-type", "application/json") .body(r#"{"name":"demo"}"#) .send() .await?; response.error_for_status()?; Ok(()) }Cliente envoltorio — la alternativa más pequeña cuando no quieres la dependencia
reqwest-middleware, o solo necesitas instrumentar llamadas seleccionadas. Las peticiones deben pasar porAllureReqwestClient::send/executeen lugar de unreqwest::Clientsencillo:bashcargo add allure-reqwestrustuse allure_reqwest::AllureReqwestClient; async fn create_order(allure: allure_rust_commons::AllureFacade) -> reqwest::Result<()> { let client = AllureReqwestClient::new(allure); let response = client .send( client .post("https://api.example.com/v1/orders") .header("content-type", "application/json") .body(r#"{"name":"demo"}"#), ) .await?; response.error_for_status()?; Ok(()) }Ambos estilos toman un
allure_rust_commons::AllureFacade. Dentro de una función#[allure_test], ese es el valorallureinyectado; fuera de una, usaallure_rust_commons::current_allure()o pasa la fachada explícitamente.Ejecuta tus pruebas y genera un reporte de la misma forma en que lo harías normalmente — consulta Rust Cargo Test.
Cada petición realizada a través de un cliente instrumentado se registra como un adjunto de intercambio HTTP, envuelto en un paso (llamado HTTP Exchange por defecto). El adjunto captura el método de la petición, la URL, los parámetros de consulta y las cabeceras; el estado, el texto de estado y las cabeceras de la respuesta; las marcas de tiempo de inicio y fin del intercambio; y, cuando la petición falla, el nombre y el mensaje del error. Los cuerpos de las peticiones se capturan por defecto (hasta un límite de tamaño); los cuerpos de las respuestas son opcionales. Consulta la referencia del esquema de adjuntos para obtener la lista exacta de campos.
INFO
Para evitar que se filtren secretos en los reportes, se redacta un conjunto predeterminado de cabeceras y parámetros de consulta antes de escribir el adjunto. Consulta la configuración de Allure Reqwest para ver la lista completa de valores predeterminados y cómo añadir más.