pytest的plugin

pytest的插件机制包括内部的默认插件、外部插件、conftest.py插件和命令行指定插件。这些插件通过hook函数实现配置、搜集、运行和报告等任务。 pytest会自动加载_test目录下的conftest.py文件,以及通过setuptools entry points找到的模块。同时,它也支持通过-p参数预加载插件,并递归加载pytest_plugins变量中指定的其他插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个plugin包含一个或多个hook函数。pytest通过调用如下plugin很好指定地hooks来执行所有关于配置,搜集,运行和报告等。

  • Pytest默认plugin参考:从pytest内部的_pytest目录下加载。
  • 外部plugins:通过setuptools entry points找到的模块。
  • conftest.py plugin:在test目录下默认找到的模块。
原则上,每一个hook调用是一个1:N的Python函数调用,其中的N指的是对一个给定规格的注册实行函数(registered implementation funtions)的数量。所有规格和实行遵从pytest_前缀命名传统,使得他们易于区分和发现。

Plugin在工具启动(tool startup)中的寻找顺序
pytest通过以下的方式在工具启动中加载plugin模块:
  • 通过加载内建plugin
  • 通过加载注册在setuptools entry points的plugin
  • 通过预先扫描命令行的-p参数,并且在真正的命令行解释前加载指定的plugin
  • 通过加载有命令行调用推断的所有conftest.py文件
    • 如果测试路径(test paths)没有指定,则使用当前路径作为测试路径
    • 如果测试路径存在,则加载conftest.py和在第一测试路径的相对目录中的conftest.py,即test*/conftest.py
  • 递归加载所有在conftest.py文件中的pytest_plugins变量中指定的plugin。
注意:pytest并不去更深的嵌套子路径下去寻找conftest.py文件在工具启动时。所以通常情况下把你的conftest.py文件放在测试的顶层路径或者项目的主路径。


如果你想查看现存的plugins的名字,可以使用--traceconfig选项。

本文来自:pytest官网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值