TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.2K subscribers
Post #7096 3.35K
🐍 Рабочий лайфхак: начинаем использовать pytest с parametrize

Тестирование функций может быть утомительным и однообразным. В 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, какие аргументы подставлять.
✅ Каждый набор данных из списка превращается в отдельный тест.
✅ Добавить новый случай — просто добавить ещё одну строку в список.

Результат: меньше дублирования, больше читаемости, легко расширять тесты.

🐸 Библиотека питониста

#буст
  • 🔥 9
  • ❤ 3
  • 👍 3
  • 🥱 1
More from @pyproglib
  1. Oct 9, 2026Post #7855
  2. Oct 9, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  3. Oct 7, 2026🎓 С Днём учителя! Учиться никогда не поздно — особенно когда технологии меняются быстрее,…
  4. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  5. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  6. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →