Как устанавливать и использовать плагины
В этом разделе рассказывается об установке и использовании сторонних плагинов. О том, как писать собственные плагины, см. Написание плагинов.
Установить сторонний плагин можно с помощью pip:
pip install pytest-NAME pip uninstall pytest-NAME
Если плагин установлен, pytest автоматически обнаружит его и подключит — активировать его не нужно.
Ниже приведён небольшой список популярных плагинов с краткими описаниями:
- pytest-django: написание тестов для приложений django с использованием интеграции с pytest.
- pytest-twisted: написание тестов для приложений twisted, запуск реактора и обработка отложенных вызовов из тестовых функций.
- pytest-cov: создание отчётов о покрытии, совместимых с распределённым тестированием
- pytest-xdist: распределение тестов между процессорами и удалёнными узлами; запуск в изолированном режиме, позволяющем pytest продолжать работу при ошибках сегментации; запуск в режиме 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 будут загружены и указанные плагины.
Примечание
Подключение плагинов с помощью переменной pytest_plugins в файлах conftest.py, расположенных не в корневом каталоге, считается устаревшим. См. подробное объяснение в разделе «Написание плагинов».
Примечание
Имя pytest_plugins зарезервировано и не должно использоваться в качестве имени пользовательского модуля плагина.
Как узнать, какие плагины активны
Чтобы узнать, какие плагины активны в вашей среде, введите:
pytest --trace-config
В заголовке тестов появится дополнительная информация об активированных плагинах и их именах. При загрузке также будут выведены локальные плагины, то есть файлы conftest.py.
Отключение / отмена регистрации плагина по имени
Вы можете запретить загрузку плагинов или отменить их регистрацию:
pytest -p no:NAME
Это означает, что все последующие попытки активировать или загрузить плагин с указанным именем завершатся неудачей.
Чтобы безусловно отключить плагин для проекта, добавьте этот параметр в файл конфигурации:
toml
[pytest] addopts = ["-p", "no:NAME"]
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 -p NAME2
toml
[pytest] addopts = ["--disable-plugin-autoload", "-p", "NAME", "-p", "NAME2"]
ini
[pytest]
addopts =
--disable-plugin-autoload
-p NAME
-p NAME2
Добавлено в версии 8.4: флаг командной строки --disable-plugin-autoload.
Примечание
-p и PYTEST_PLUGINS позволяют явно управлять загружаемыми плагинами, но предназначены для немного разных задач.
-
-pзагружает (или отключает с помощью-p no:<name>) плагин по имени или точке входа для конкретного запуска pytest и обрабатывается на раннем этапе запуска. -
PYTEST_PLUGINS— это разделённый запятыми список модулей Python, которые импортируются и регистрируются как плагины во время запуска. Этот механизм часто используется наборами тестов, например при тестировании плагина.
При явном управлении загрузкой плагинов (особенно с помощью PYTEST_DISABLE_PLUGIN_AUTOLOAD или --disable-plugin-autoload) не указывайте один и тот же плагин несколькими способами. Повторная регистрация одного и того же плагина может привести к ошибкам.
Примеры:
# Disable auto-loading and load only specific plugins for this invocation PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest -p xdist
# Disable auto-loading and load plugin modules during startup PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 PYTEST_PLUGINS=mymodule.plugin,xdist pytest
© 2015–2026 Holger Krekel and pytest-dev team
Licensed under the MIT License.
https://docs.pytest.org/en/stable/how-to/plugins.html