首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pytest的内置插件盘点9. debugging

9. debugging

插件路径:_pytest.debugging

实现的 hook

调用的 hook

pytest_leave_pdb

pytest_enter_pdb

插件功能

代码片段

class PdbTrace: @hookimpl(hookwrapper=True) def pytest_pyfunc_call(self, pyfuncitem) -> Generator[None, None, None]: wrap_pytest_function_for_tracing(pyfuncitem) yield class PdbInvoke: def pytest_exception_interact( self, node: Node, call: "CallInfo[Any]", report: BaseReport ) -> None: ...

def pytest_internalerror(self, excinfo: ExceptionInfo[BaseException]) -> None: tb = _postmortem_traceback(excinfo) post_mortem(tb)

pdbtrace的插件比较简单,通过 hook,让在框架执行用例时,调用 pdb,进入调试模式

pdbinvoke插件也比较简单,通过 hook,让框架在遇到异常时,调用 pdb,进入调试模式

简评

这个插件和上一个terminal风格非常相似,

创建新的插件

创建参数

然后根据参数来决定是否注册(启用)插件

真正的活儿不是自己干,而是委托给自己创建的两个插件

...

这两个插件是在传递参数化之后才会被注册,所以之前的分析脚本漏掉了它们

不过它们的内容也比较简单,适时的调用 pdb 即可

...

pdb 是 Python 的标准库中用来进行调试的工具,可以:

在对 python 进行断点和单步执行

检视堆栈帧、源码

执行任意 python 代码

说实话我对它的了解还仅限于基本使用,底层细节还未深入,更不要通过代码进行定制了

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1Uh6NjaOUOglj8N0DEcz7Qg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券