Spec-Zone.ru › pytest

Как помечать тестовые функции атрибутами

С помощью вспомогательной функции pytest.mark вы можете легко задавать метаданные для тестовых функций. Полный список встроенных меток приведён в справочнике API. Также можно вывести список всех меток, включая встроенные и пользовательские, с помощью CLI — pytest --markers.

Вот некоторые встроенные метки:

  • usefixtures — использовать фикстуры для тестовой функции или класса
  • filterwarnings — фильтровать определённые предупреждения тестовой функции
  • skip — всегда пропускать тестовую функцию
  • skipif — пропускать тестовую функцию, если выполнено определённое условие
  • xfail — считать результат «ожидаемой ошибкой», если выполнено определённое условие
  • parametrize — выполнять один и тот же тест несколько раз.

Создавать собственные метки и применять метки ко всем тестовым классам или модулям очень просто. Эти метки могут использоваться плагинами, а также часто применяются для выбора тестов в командной строке с помощью параметра -m.

Примеры, которые также служат документацией, см. в разделе Работа с пользовательскими метками.

Примечание

Метки можно применять только к тестам; на фикстуры они не влияют.

Регистрация меток

Вы можете зарегистрировать пользовательские метки в файле конфигурации следующим образом:

toml

[pytest]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "serial",
]

ini

[pytest]
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    serial

Обратите внимание: всё, что следует после : за именем метки, является необязательным описанием.

Также можно программно регистрировать новые метки в хуке pytest_configure:

def pytest_configure(config):
    config.addinivalue_line(
        "markers", "env(name): mark test to run only on named environment"
    )

Зарегистрированные метки отображаются в справке pytest и не вызывают предупреждений (см. следующий раздел). Сторонним плагинам рекомендуется всегда регистрировать свои метки.

Выдача ошибок для неизвестных меток

Незарегистрированные метки, применённые с помощью декоратора @pytest.mark.name_of_the_mark, всегда вызывают предупреждение, чтобы избежать неожиданного поведения из-за опечаток в именах. Как описано в предыдущем разделе, отключить предупреждение для пользовательских меток можно, зарегистрировав их в файле конфигурации или используя пользовательский хук pytest_configure.

Если задан параметр конфигурации strict_markers, применение любой неизвестной метки с помощью декоратора @pytest.mark.name_of_the_mark вызовет ошибку. Чтобы включить эту проверку в проекте, задайте strict_markers в конфигурации:

toml

[pytest]
addopts = ["--strict-markers"]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "serial",
]

ini

[pytest]
strict_markers = true
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    serial

© 2015–2026 Holger Krekel and pytest-dev team
Licensed under the MIT License.
https://docs.pytest.org/en/stable/how-to/mark.html

Spec-Zone.ru

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