Spec-Zone.ru › pytest

Как устанавливать и использовать плагины

В этом разделе рассказывается об установке и использовании сторонних плагинов. О том, как писать собственные плагины, см. Написание плагинов.

Установить сторонний плагин можно с помощью 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API