Wrapture发布:扩展Python代码追踪与测试功能

工具AI 评分 65/100Simon Willison
AI 聚合

本条为 AI 依据下方公开信源自动整理生成的摘要,不构成转载,可能存在偏差,请以原文为准。整理者:贝果科技 AI 资讯助手。

Graham Dumpleton推出新工具Wrapture,将wrapt的monkeypatching理念扩展至测试和追踪领域。该工具可包装任何函数或方法,实现访问追踪或值覆盖,同时作为unittest.mock的替代方案。Wrapture支持OpenTelemetry,提供基于配置的追踪机制,无需修改被监控程序即可添加追踪功能。

全文梳理

AI 摘要依据下方信源原文自动整理,非原文转载

从猴子补丁到观测

Wrapture 由 Graham Dumpleton 推出,他此前的工作包括 wrapt、mod_wsgi 以及 New Relic 的 Python agent。按照他的描述,Wrapture 把 wrapt 中的猴子补丁思路延伸了一步,让同一套机制同时服务于测试与追踪两个场景。具体能力上,它可以把任意函数或方法包裹起来,使对这些函数的每一次访问都能被记录下来,也可以让被包裹的调用改为返回另一个值。这使它在定位上兼具两种角色:一方面可以替代 unittest.mock 承担打桩与替换的职责,另一方面又能为已有项目补上追踪能力。Dumpleton 提到,他一直关注的问题是如何把观测附着在自己无法控制的代码上,记录流经这些代码的内容,同时又不打扰被观察的程序本身。Wrapture 正是围绕这一目标设计的。

配置即可接入追踪

Wrapture 内置了对 OpenTelemetry 的支持,并提供了一套完全基于配置的方式来为现有 Python 项目添加追踪,不需要改动业务代码。材料给出的配置片段里,capture 字段被设为 summary,随后是一段 [[observe]] 配置,其中 target 指向 domain:Calculator,name 列出 outer 与 inner 两个目标,type 指定为 jsonlines,path 则指向 trace.jsonl。从这组字段可以看出,使用者通过声明目标对象与具体方法名来圈定观测范围,输出格式与落盘位置也由配置决定,追踪结果会写入指定的 jsonlines 文件。这种写法的意义在于,接入观测的入口从代码层转移到了配置层,已有项目可以按需挂载。

替代 mock 与旁路观测

与 unittest.mock 相比,Wrapture 的差异在于它不只处理测试中的替换需求,还把追踪作为同等重要的能力。测试场景下,它能让调用返回不同的值;追踪场景下,它记录访问与流经的数据,并且强调不干扰被观察的程序。适用范围上,材料提到的对象是 Python 项目中的函数与方法,既可以针对自己无法控制的代码附加观测,也可以借配置为既有工程补上追踪。限制方面,材料只给出了配置示例与能力描述,没有说明性能开销、支持的 Python 版本或与其他追踪方案的兼容细节。对读者而言,这意味着多了一种把测试打桩与运行期观测合并到同一套包裹机制里的选择,接入成本主要体现在编写配置而非改写源码。

为什么值得看

为Python开发者提供非侵入式代码观察与测试解决方案,简化现有项目追踪集成。

信源1 家

  1. [1]Simon WillisonIntroducing wrapture

关键事实

  • Wrapture由Graham Dumpleton开发,wrapt、mod_wsgi和New Relic Python代理的作者[1]

  • Wrapture可包装函数或方法,实现访问追踪或返回值覆盖[1]

  • 工具支持OpenTelemetry,提供配置化追踪机制[1]

  • Wrapture可作为unittest.mock的替代方案[1]

相关 · 工具

本页内容由 AI 自动聚合公开信源生成,仅供了解行业动态参考,不构成任何投资或决策建议。如需引用请以原文出处为准。