如何安装和使用插件¶
本节介绍如何安装和使用第三方插件。有关编写您自己的插件,请参阅编写插件。
安装第三方插件可以使用 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
。
有关如何获取插件名称,请参阅找出哪些插件是活跃的。
禁用插件自动加载¶
如果您想禁用插件的自动加载,而不是要求您使用 -p
或 PYTEST_PLUGINS
手动指定每个插件,您可以使用 --disable-plugin-autoload
或 PYTEST_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
命令行标志。