Как использовать @pytest.mark.skip для пропуска теста Декоратор @pytest.mark.skip в pytest предназначен для пропуска теста с его помощью можно пометить тест, который не требуется запускать pytest зафиксирует факт пропуска и укажет причину, если она задана для пояснения причины пропуска можно передать параметр reason="пояснение" декоратор особенно удобен для временного исключения тестов при известных ошибках или неподдерживаемых условиях в отличие от skipif, он пропускает тест без проверки условия это помогает понятно обозначать для команды текущий статус тестов
Как пропустить тест в pytest с помощью @pytest.mark.skip?
Как использовать @pytest.mark.skip для пропуска теста Декоратор @pytest.mark.skip в pytest предназначен для пропуска теста с его помощью можно пометить тест, который не требуется запускать pytest зафиксирует факт…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Как использовать @pytest.mark.skip для пропуска теста
- Декоратор @pytest.mark.skip в pytest предназначен для пропуска теста
- с его помощью можно пометить тест, который не требуется запускать
- pytest зафиксирует факт пропуска и укажет причину, если она задана
- для пояснения причины пропуска можно передать параметр
reason="пояснение" - декоратор особенно удобен для временного исключения тестов при известных ошибках или неподдерживаемых условиях
- в отличие от
skipif, он пропускает тест без проверки условия - это помогает понятно обозначать для команды текущий статус тестов
Пример:
@pytest.mark.skip(reason="Функционал временно недоступен")
def test_example():
pass
Подробный ответ
Основной ответ
В pytest тест помечают для пропуска с помощью декоратора @pytest.mark.skip. Такая отметка сообщает, что тест не следует выполнять во время запуска набора. Это полезно, если тест временно потерял актуальность, зависит от внешних условий или ещё не исправлен, но удалять его из проекта не нужно.
Декоратор размещают непосредственно перед функцией теста: достаточно указать @pytest.mark.skip(reason="Причина пропуска"). Аргумент reason при этом необходим, чтобы было понятно, по какой причине тест не выполняется.
Ключевые моменты
@pytest.mark.skipзадаёт статический пропуск: тест не запустится ни при каких условиях.- Для пропуска по условию применяется
@pytest.mark.skipif(condition, reason="..."): тест будет пропущен, когда выражениеconditionвозвращает истинное значение. - В отчёте pytest такие тесты отмечаются как пропущенные, а рядом выводится заданная причина. Благодаря этому тестовый код проще сопровождать.
- Декоратор
skipпозволяет временно не запускать тесты, связанные с известными проблемами, сохраняя их в исходном коде.
Практический контекст
Например, если в проекте используется pytest 7 и интеграционный тест требуется временно исключить из CI пайплайна из-за известной ошибки, применяют:
import pytest
@pytest.mark.skip(reason="Fix later - известный баг #123")
def test_integration():
...
В результате тест будет отмечен как пропущенный, а отчёт явно покажет причину. Это поддерживает тестовый набор в актуальном состоянии и предотвращает ложные падения.