Graham Dumpleton presenta wrapture, una herramienta de Python que envuelve el código real en lugar de sustituirlo

Fuentes: Introducing wrapture: wrap rather than replace, with monkey patching, testing and tracing on one mechanism

Graham Dumpleton, autor original del agente Python de New Relic y mantenedor histórico de la librería wrapt, ha presentado wrapture, una nueva herramienta para Python que unifica en un solo mecanismo tres usos tradicionalmente separados: el monkey patching, la grabación de llamadas en pruebas unitarias y el trazado de aplicaciones en ejecución. Su idea central es envolver el código real en lugar de reemplazarlo, de modo que las funciones envueltas siguen ejecutándose mientras la herramienta observa, modifica o responde la llamada.

A diferencia de unittest.mock, que sustituye el código por objetos fabricados, wrapture instala un envoltorio transparente alrededor de la función original. El usuario declara un binding sobre un método o función y, dentro de un bloque timeline, todas las llamadas que atraviesan esos bindings se registran en una cinta con argumentos normalizados contra la firma real, valores de retorno auténticos y anidamiento fiel al grafo de llamadas. Para pruebas, esto permite verificar rutas de error inyectando fallos en una dependencia y comprobando que otra nunca llegó a invocarse. La herramienta también ofrece stub() para callables y mock(Spec) para objetos, ambos estrictos en la comprobación de firmas y sin equivalente de Mock sin especificación.

Fuera de los tests, wrapture se configura mediante un archivo wrapture.toml que nombra los objetivos y los sinks, de modo que puede añadirse trazado a una aplicación sin modificar su código. La librería es de código abierto y se distribuye en GitHub y PyPI, con documentación en Read the Docs que incluye una guía de migración desde unittest.mock.