pytest的plugin

一个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官网

你可能感兴趣的:(pytest的plugin)