Как пометить тестовые функции атрибутами¶
Используя помощник pytest.mark
, вы можете легко установить метаданные для ваших тестовых функций. Полный список встроенных маркеров вы можете найти в API Reference. Или вы можете перечислить все маркеры, включая встроенные и пользовательские, используя CLI - pytest --markers
.
Вот некоторые из встроенных маркеров:
usefixtures - использование приспособлений в тестовой функции или классе
filterwarnings - отфильтровать определенные предупреждения тестовой функции
skip - всегда пропускать функцию проверки
skipif - пропуск тестовой функции при выполнении определенного условия
xfail - при выполнении определенного условия выдать «ожидаемый результат неудачи»
parametrize - выполнить несколько вызовов одной и той же тестовой функции.
Легко создавать пользовательские маркеры или применять маркеры к целым тестовым классам или модулям. Эти маркеры могут использоваться плагинами, а также обычно используются для select tests в командной строке с опцией -m
.
Смотрите Работа с пользовательскими маркерами для примеров, которые также служат документацией.
Примечание
Пометки могут быть применены только к тестам, не оказывая влияния на fixtures.
Регистрация знаков¶
Вы можете зарегистрировать пользовательские метки в файле pytest.ini
следующим образом:
[pytest]
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
serial
или в вашем pyproject.toml
файле, например, так:
[tool.pytest.ini_options]
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 и не выдают предупреждений (см. следующий раздел). Рекомендуется, чтобы сторонние подключаемые модули всегда register their markers.
Выявление ошибок на неизвестных знаках¶
Незарегистрированные метки, применяемые с помощью декоратора @pytest.mark.name_of_the_mark
, всегда будут выдавать предупреждение, чтобы избежать молчаливого выполнения неожиданных действий из-за неправильно введенных имен. Как описано в предыдущем разделе, вы можете отключить предупреждение для пользовательских меток, зарегистрировав их в вашем файле pytest.ini
или используя пользовательский хук pytest_configure
.
Когда передан флаг командной строки --strict-markers
, любые неизвестные метки, примененные с помощью декоратора @pytest.mark.name_of_the_mark
, вызовут ошибку. Вы можете обеспечить эту проверку в своем проекте, добавив --strict-markers
к addopts
:
[pytest]
addopts = --strict-markers
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
serial