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

pytest核心组件:pluggy插件系统(二)

3. 插件机制实例分析

在 pluggy 的文档中提供了一个完整的名为 “eggsample” 软件 + 插件实例 ,

接下来,我以这个实例进行分析,更加深入得体验 pluggy 插件系统的使用

01

编写软件

以一个名为  的项目编写软件本体,

首先,创建第一个文件来定义 hookimpl,供内部或外部插件实现 hook 使用

接着,创建第二个文件来定义 hookspecs,申明本软件中一共有些什么样的 hook

接下来,实现一个内部插件,供软件本体使用

最后,编写软件本体的代码

在软件本体中,做了几件事情:

创建 pm(22 行)

加载 hook 申明(23 行)

通过 setuptools 加载第三方插件 (24 行)

通过 import 加载内置插件 (25 行)

调用 hook,完成软件功能

从这个例子来看,hook 的调用代码和 非 hook 调用代码混在一起的,

也就是说,软件会将插件(hook 的实现)作为自己的一部分进行使用,而不关心这些插件被定义在哪里

还没有结束,为了使用插件能够像 pytest 那样能够安装、运行,还需要为软件额外创建一个

全部就绪之后,就可以使用 pip 进行安装了

OK,一个 python 软件就开发完毕并且安装成功了!

运行一下看看效果,在命令执行

它会将内部定义的数据  再加上插件返回的数据()合并在一起,打乱顺序后输出

同时,也会将内部定义的数据 () 传递给插件,在插件对数据进行修改后再进行输出

目前软件只使用了内部插件来完成部分功能,

接下来看一看外部插件如何创建,

以及安装外部插件后,软件的执行效果

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券