Как пропустить тест в 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 для пропуска теста

  • Декоратор @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():
...

В результате тест будет отмечен как пропущенный, а отчёт явно покажет причину. Это поддерживает тестовый набор в актуальном состоянии и предотвращает ложные падения.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку