Почему параметризация `pytest` предпочтительнее цикла `for` внутри одного теста?

Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.

Короткий ответ

Что ответить на собеседовании

Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.

Подробный разбор

Ответ с пояснениями

Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.

import pytest

@pytest.mark.parametrize("value, expected", [(1, 2), (3, 6)])
def test_double(value, expected):
    assert value * 2 == expected

В цикле внутри одного теста первая неудачная проверка обычно останавливает весь тест. Параметризация также облегчает понятные ids и отдельные marks для вариантов. Цикл остаётся уместен, когда проверяется единый последовательный сценарий с общим состоянием, а не независимые примеры одной функции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее