如何安装和使用插件

本节讨论安装和使用第三方插件。有关编写自己的插件,请参阅 编写插件

使用 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 插件列表

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

在测试模块或 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

有关如何获取插件名称,请参阅 查找哪些插件处于活动状态