如何安装和使用插件

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

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

pip install pytest-NAME
pip uninstall pytest-NAME

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

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

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

  • pytest-twisted:为twisted应用程序编写测试,启动一个 reactor 并处理测试函数中的延迟。

  • 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 文件中要求/加载插件

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

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

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

注意

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

注意

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

找出哪些插件是活动的

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

pytest --trace-config

您将获得一个扩展的测试头,显示已激活的插件及其名称。它还将打印加载时本地插件,即conftest.py文件。

按名称停用/注销插件

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

pytest -p no:NAME

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

如果您想无条件地禁用项目的插件,可以将此选项添加到您的配置文件中

[pytest]
addopts = ["-p", "no:NAME"]
[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", "-p", "NAME2"]
[pytest]
addopts =
    --disable-plugin-autoload
    -p NAME
    -p NAME2

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