如何安装和使用插件

本节介绍如何安装和使用第三方插件。有关编写您自己的插件,请参阅编写插件

安装第三方插件可以使用 pip 轻松完成

pip install pytest-NAME
pip uninstall pytest-NAME

如果插件已安装,pytest 会自动发现并集成它,无需手动激活。

以下是一些常用插件的简要说明列表

  • pytest-django: 使用 pytest 集成,为 django 应用编写测试。

  • pytest-twisted: 为 twisted 应用编写测试,从测试函数启动 reactor 并处理 deferreds。

  • pytest-cov: 覆盖率报告,兼容分布式测试。

  • pytest-xdist: 将测试分发到 CPU 和远程主机,在 boxed 模式下运行以防止分段错误,在 looponfailing 模式下运行,在文件更改时自动重新运行失败的测试。

  • pytest-instafail: 在测试运行期间报告失败。

  • pytest-bdd: 使用行为驱动测试编写测试。

  • pytest-timeout: 根据函数标记或全局定义设置测试超时。

  • pytest-pep8: 一个 --pep8 选项,用于启用 PEP8 兼容性检查。

  • pytest-flakes: 使用 pyflakes 检查源代码。

  • allure-pytest: 通过 allure-framework 报告测试结果。

要查看所有插件及其针对不同 pytest 和 Python 版本的最新测试状态的完整列表,请访问Pytest 插件列表

您还可以通过pypi.org 上的 pytest- 搜索发现更多插件。

在测试模块或 conftest 文件中要求/加载插件

您可以使用 pytest_plugins 在测试模块或 conftest 文件中要求插件。

pytest_plugins = ("myapp.testsupport.myplugin",)

当测试模块或 conftest 插件加载时,指定的插件也会被加载。

注意

在非根 conftest.py 文件中使用 pytest_plugins 变量要求插件已弃用。请参阅“编写插件”部分中的完整解释

注意

名称 pytest_plugins 是保留的,不应作为自定义插件模块的名称使用。

找出哪些插件是活跃的

如果您想找出您的环境中哪些插件是活跃的,您可以输入

pytest --trace-config

您将获得一个扩展的测试头,其中显示了已激活的插件及其名称。当本地插件(即conftest.py 文件)加载时,它也会打印出来。

按名称停用/注销插件

您可以阻止插件加载或注销它们

pytest -p no:NAME

这意味着任何后续尝试激活/加载指定插件的操作都将无效。

如果您想为项目无条件禁用某个插件,可以将此选项添加到您的 pytest.ini 文件中

[pytest]
addopts = -p no:NAME

或者,如果您只想在某些环境(例如 CI 服务器)中禁用它,您可以将 PYTEST_ADDOPTS 环境变量设置为 -p no:name

有关如何获取插件名称,请参阅找出哪些插件是活跃的

禁用插件自动加载

如果您想禁用插件的自动加载,而不是要求您使用 -pPYTEST_PLUGINS 手动指定每个插件,您可以使用 --disable-plugin-autoloadPYTEST_DISABLE_PLUGIN_AUTOLOAD

export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
export PYTEST_PLUGINS=NAME,NAME2
pytest
pytest --disable-plugin-autoload -p NAME,NAME2
[pytest]
addopts = --disable-plugin-autoload -p NAME,NAME2

版本 8.4 新增: --disable-plugin-autoload 命令行标志。