Comenzando con Allure Diesel
Registra las consultas de Diesel ejecutadas como pasos en tus reportes de prueba de Allure Report. Se conecta a la API Instrumentation de Diesel, por lo que se configura una sola vez en el código de prueba o setup y nunca afecta los puntos de llamada de consultas en producción.
allure-diesel registra información según el contexto de Allure vinculado al hilo actual cuando se ejecuta una consulta — el mismo contexto vinculado al hilo que Rust Cargo Test configura automáticamente dentro de #[allure_test]. Fuera de un contexto de Allure activo (por ejemplo, en código de aplicación, o en pruebas que no usan #[allure_test]), cada evento de instrumentación es una operación silenciosa sin efecto — no se registra nada y nada falla.
INFO
El repositorio oficial allure-rust también publica allure-reqwest para capturar llamadas HTTP de reqwest como adjuntos de Allure.
Configuración
Asegúrate de tener una integración de Allure configurada para tu ejecutor de pruebas. Consulta Rust Cargo Test.
Agrega la dependencia:
bashcargo add allure-diesel --devConecta la instrumentación. Hay dos formas de hacerlo:
Por conexión — conéctala justo después de establecer cada conexión que quieras capturar:
rustuse diesel::prelude::*; use diesel::sqlite::SqliteConnection; fn connect() -> ConnectionResult<SqliteConnection> { let mut conn = SqliteConnection::establish(":memory:")?; conn.set_instrumentation(allure_diesel::AllureInstrumentation::new()); Ok(conn) }Globalmente — regístrala una vez durante el setup de las pruebas, y cada conexión establecida posteriormente en el proceso se captura sin cambios en los puntos de llamada:
rustfn setup() -> diesel::QueryResult<()> { allure_diesel::install_default() }Ejecuta tus pruebas y genera un reporte de la misma manera que lo harías normalmente — consulta Rust Cargo Test.
Qué se captura
- Cada declaración ejecutada se convierte en un paso nombrado según su SQL renderizado (consulta Referencia para ver cómo se acortan las declaraciones largas), y por defecto incluye el SQL completo como un paso de adjunto anidado
query.sql. - Los límites de
BEGIN/COMMIT/ROLLBACKse convierten en un pasotransactionque anida las consultas ejecutadas dentro de esa transacción, incluyendo las propias declaraciones límite. Consulta Referencia para ver exactamente cómo se representan el anidamiento y los fallos. - Una consulta que devuelve un error de base de datos marca su paso (y, para un límite de transacción fallido, el paso
transactionque lo contiene) como fallido, con el mensaje de error de Diesel.
Qué no se captura
La instrumentación de Diesel expone el SQL de cada declaración pero no las filas que devuelve una consulta — ningún hook no invasivo de Diesel lo hace. Por lo tanto, este crate registra consultas y transacciones, no conjuntos de resultados.
WARNING
No hay redacción de datos. El SQL registrado — tanto en el nombre del paso como en el adjunto query.sql — puede incluir valores de enlace exactamente como Diesel los renderiza (por ejemplo, mediante un comentario -- binds: [...] en consultas parametrizadas), por lo que una declaración capturada puede contener los mismos datos sensibles que tu consulta estaba parametrizada para evitar registrar en texto plano. Ten esto en cuenta antes de publicar reportes generados a partir de pruebas que manejan datos reales.