Configuración de Allure Reqwest
Esta página describe CaptureOptions, que controla lo que registran AllureReqwestMiddleware y AllureReqwestClient. Constrúyalo con los métodos del builder a continuación y pásalo con .with_options(...):
use allure_reqwest::{AllureReqwestClient, CaptureOptions};
let client = AllureReqwestClient::new(allure).with_options(
CaptureOptions::default()
.with_attachment_name("Create order")
.with_response_body_capture(64 * 1024),
);Personalizar el nombre del adjunto
with_attachment_name(name: impl Into<String>)
Establece un nombre fijo para el paso y el adjunto creados para cada intercambio capturado. Por defecto, cada intercambio se adjunta bajo el nombre HTTP Exchange. A diferencia de otras integraciones HTTP de Allure, el nombre siempre es una cadena estática — no hay un callback que lo derive de la solicitud o la respuesta.
Controlar la captura del cuerpo
without_request_body_capture()— los cuerpos de solicitud se capturan por defecto; llame a esto para deshabilitarlowith_response_body_capture(max_body_size: usize)— los cuerpos de respuesta no se capturan por defecto; llame a esto para habilitarlowithout_response_body_capture()with_max_body_size(max_body_size: usize)— establece el límite en bytes
WARNING
Solo hay un límite de tamaño, compartido tanto por la captura del cuerpo de solicitud como por la del cuerpo de respuesta — no hay límites independientes para cada lado. with_response_body_capture(n) y with_max_body_size(n) establecen el mismo valor subyacente, así que el que se llame al último prevalece para ambos lados:
use allure_reqwest::CaptureOptions;
// max_body_size termina siendo 1024 para AMBAS capturas, solicitud y respuesta — la llamada
// with_max_body_size(5) es sobrescrita por el propio argumento de with_response_body_capture,
// que se ejecuta después.
let a = CaptureOptions::default()
.with_max_body_size(5)
.with_response_body_capture(1024);
// max_body_size termina siendo 5 para AMBOS lados — with_max_body_size se ejecuta al último aquí.
let b = CaptureOptions::default()
.with_response_body_capture(1024)
.with_max_body_size(5);Si desea un límite específico para el cuerpo de la solicitud junto con la captura de la respuesta, llame a with_max_body_size(...) después de with_response_body_capture(...).
El límite por defecto es 64 KiB (65536 bytes). Los cuerpos más grandes que el límite se capturan hasta el límite y se marcan con truncated: true en el adjunto — size sigue informando el recuento de bytes completo, sin truncar. Vea la referencia para conocer los campos exactos.
Los cuerpos de respuesta solo se capturan cuando el cuerpo puede almacenarse en memoria por completo: AllureReqwestClient y AllureReqwestMiddleware leen la respuesta en memoria, la registran y reconstruyen una Response equivalente para que su código de prueba pueda seguir leyéndola normalmente después.
Redacción
Los valores sensibles de encabezados y parámetros de consulta se reemplazan con la cadena centinela __ALLURE_REDACTED__ antes de que se escriba el adjunto. Los valores por defecto son:
| Categoría | Redactado por defecto |
|---|---|
| Encabezados | authorization, cookie, proxy-authorization, set-cookie |
| Parámetros de consulta | access_token, api_key, key, password, refresh_token, secret, token |
La coincidencia es por nombre exacto, sin distinción entre mayúsculas y minúsculas — no hay coincidencia por expresiones regulares ni por patrones.
redact_header(name: impl Into<String>)redact_query_param(name: impl Into<String>)
Ambos agregan un nombre a la lista de redacción existente en lugar de reemplazarla — no hay forma de eliminar un nombre redactado por defecto, solo de agregar más:
use allure_reqwest::CaptureOptions;
let options = CaptureOptions::default()
.redact_header("x-internal-secret")
.redact_query_param("session_id");
// authorization, cookie, etc. siguen siendo redactados, además de estos dos.Errores
Cuando una solicitud falla — un error de transporte, o un fallo al leer el cuerpo de la respuesta — el campo error del adjunto registra el nombre del tipo de error (reqwest::Error para AllureReqwestClient, reqwest_middleware::Error para AllureReqwestMiddleware) y su mensaje de presentación. No hay opción para capturar un stack trace.
Los códigos de estado de error HTTP (4xx/5xx) no son tratados como errores por allure-reqwest — reqwest en sí tampoco los trata como errores, así que el adjunto obtiene una response normal sin error, igual que con cualquier otro código de estado. Llame usted mismo a .error_for_status() si desea que reqwest convierta una respuesta 4xx/5xx en un Err.