Pytest 的插件开发

本文详细介绍了Pytest插件开发,包括插件的介绍、启动时的加载顺序、开发流程,以及并发执行测试用例插件的案例。通过理解pytest的钩子系统和插件发现机制,开发者可以自定义钩子函数实现特定功能,并打包上传到PYPI。
摘要由CSDN通过智能技术生成

前言

今天笔者想和小伙伴们聊聊pytest,用过pytest的小伙伴应该都知道,pytest之所以功能强大,是因为pytest的插件非常的多。这是插件大多是pytest的使用者所开发的,今天咱们专门来聊聊如何去自己开发Pytest的插件。

一、pytest插件的介绍

pytest框架采用的是插件系统的模式来设计的,pytest运行的所有流程都是基于插件实现的钩子来实现的。一个插件包含一个或多个钩子函数。编写钩子 解释了如何自己编写钩子函数的基础知识和细节。 pytest通过调用插件的指定钩子来实现配置、收集、运行和报告的各个方面:

内置插件:从 pytest 的内部_pytest目录加载。 外部插件:通过 setuptools 入口点发现的模块 conftest.py 插件:在测试目录中自动发现的模块

原则上,每个钩子调用都是一个1:NPython 函数调用,其中N是给定钩子的已注册实现函数的数量。所有钩子都遵循pytest_前缀命名约定,使其易于区分和查找。

二、pytest启动时插件发现顺序

pytest通过以下方式在工具启动时加载插件模块:

  1. 通过扫描命令行中的选项并阻止加载该插件(即使是内置插件也可以通过这种方式阻止)。这发生在正常的命令行解析之前。-p no:name
  2. 通过加载所有内置插件。
  3. 通过扫描命令行选项并加载指定的插件。这发生在正常的命令行解析之前。-p name
  4. 通过加载通过setuptools 入口点注册的所有插件。
  5. 通过加载通过PYTEST_PLUGINS环境变量。
  6. 通过加载conftest.py命令行调用推断的所有文件:
  7. 如果没有指定测试路径,则使用当前目录作为测试路径
  8. 如果存在,则加载conftest.py并test*/conftest.py相对于第一个测试路径的目录部分。加载文件后conftest.py ,加载其 pytest_plugins变量中指定的所有插件(如果存在)。
  9. 请注意,pytest 在工具启动时不会conftest.py在更深的嵌套子目录中找到文件。conftest.py将文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值