Тестирование функций может быть утомительным и однообразным. В
pytest есть супер-фича parametrize, которая позволяет запускать один тест с множеством входных данных — без дублирования кода.Например, есть функция
add_nums():def add_nums(nums):
return sum(nums)
Вместо того чтобы писать три почти одинаковых теста:
def test_123():
assert add_nums([1, 2, 3]) == 6
def test_negatives():
assert add_nums([1, 2, -3]) == 0
def test_empty():
assert add_nums([]) == 0
Можно использовать parametrize:
import pytest
@pytest.mark.parametrize(
"nums, expected_total",
[
([1, 2, 3], 6),
([1, 2, -3], 0),
([], 0),
]
)
def test_add_nums(nums, expected_total):
assert add_nums(nums) == expected_total
Как это работает:
✅ Декоратор
@pytest.mark.parametrize говорит pytest, какие аргументы подставлять.✅ Каждый набор данных из списка превращается в отдельный тест.
✅ Добавить новый случай — просто добавить ещё одну строку в список.
Результат: меньше дублирования, больше читаемости, легко расширять тесты.
🐸 Библиотека питониста
#буст
