tgoop.com/pyproglib/7096
Create:
Last Update:
Last Update:
🐍 Рабочий лайфхак: начинаем использовать 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
, какие аргументы подставлять.Результат: меньше дублирования, больше читаемости, легко расширять тесты.
#буст