Data-driven подход отделяет сценарий (шаги и assertions) от набора входных данных и ожидаемых результатов, прогоняя один тест по таблице кейсов.
Разбор
- Источники данных: CSV/JSON/YAML, БД, фабрики объектов, parametrize в pytest/JUnit.
- Удобно для валидаций форм, границ значений, матриц статусов.
- Риск: «толстые» датасеты без понятных имён кейсов усложняют отладку падений.
- Имя кейса и минимальный reproducible dataset важнее объёма таблицы.
Пример
@pytest.mark.parametrize("email,ok", [
("a@b.com", True),
("bad", False),
("", False),
])
def test_email(email, ok):
assert validate_email(email) is ok
Итог
Data-driven умножает покрытие без копипасты шагов, если кейсы именованы и независимы.