Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.
Почему параметризация `pytest` предпочтительнее цикла `for` внутри одного теста?
Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Параметризация создаёт отдельный тестовый случай для каждого набора данных. Поэтому один провал не скрывает остальные проверки, а отчёт показывает конкретный вход и позволяет запустить его отдельно.
import pytest
@pytest.mark.parametrize("value, expected", [(1, 2), (3, 6)])
def test_double(value, expected):
assert value * 2 == expected
В цикле внутри одного теста первая неудачная проверка обычно останавливает весь тест. Параметризация также облегчает понятные ids и отдельные marks для вариантов. Цикл остаётся уместен, когда проверяется единый последовательный сценарий с общим состоянием, а не независимые примеры одной функции.