Ответ
Для запуска одного теста с несколькими наборами входных данных в pytest используется декоратор @pytest.mark.parametrize.
Это основной способ избежать дублирования кода при проверке функции на множестве различных кейсов, что делает тесты более читаемыми и масштабируемыми.
Синтаксис:
@pytest.mark.parametrize("имена_аргументов", [список_значений])
"имена_аргументов": Строка с именами параметров через запятую, которые будут переданы в тестовую функцию.[список_значений]: Список кортежей или других итерируемых объектов, где каждый элемент представляет один тестовый случай.
Пример:
import pytest
# Тестовые данные: (входное_число, ожидаемый_результат)
test_cases = [
(2, 4),
(0, 0),
(-3, 9),
(1.5, 2.25)
]
@pytest.mark.parametrize("input_number, expected_square", test_cases)
def test_square_function(input_number, expected_square):
"""Тестирует функцию возведения в квадрат."""
assert input_number ** 2 == expected_square
В этом примере test_square_function будет выполнен четыре раза, по одному для каждой пары значений из списка test_cases. Если один из тестов упадет, pytest точно укажет, на каком наборе данных произошла ошибка.