Что такое parametrize?
1️⃣ Как кратко ответить
Parametrize — это метод в тестировании, который позволяет запускать один и тот же тест с разными наборами входных данных. В Python, библиотека pytest предоставляет декоратор @pytest.mark.parametrize, который упрощает создание параметризованных тестов, улучшая покрытие тестами и снижая дублирование кода.
2️⃣ Подробное объяснение темы
Параметризация (или parametrize) — это техника, которая позволяет запускать один и тот же тест с различными наборами данных. Это особенно полезно, когда вы хотите убедиться, что ваш код работает корректно с разными входными значениями.
Зачем это нужно?
-
Улучшение покрытия тестами: Параметризация позволяет протестировать функцию или метод с множеством различных входных данных, что помогает выявить ошибки, которые могут возникнуть только при определенных условиях.
-
Снижение дублирования кода: Вместо написания нескольких тестов, которые отличаются только входными данными, вы можете написать один параметризованный тест, что делает ваш код более чистым и поддерживаемым.
-
Экономия времени: Параметризация позволяет быстро и легко добавлять новые тестовые случаи, просто добавляя новые наборы данных.
Как это работает?
В pytest, параметризация осуществляется с помощью декоратора @pytest.mark.parametrize. Давайте рассмотрим простой пример:
import pytest
# Функция, которую мы будем тестировать
def add(a, b):
return a + b
# Параметризованный тест
@pytest.mark.parametrize("input1, input2, expected", [
(1, 2, 3), # первый набор данных
(4, 5, 9), # второй набор данных
(10, 20, 30) # третий набор данных
])
def test_add(input1, input2, expected):
assert add(input1, input2) == expected
Разбор примера:
- Функция
add: Это простая функция, которая складывает два числа. - Декоратор
@pytest.mark.parametrize: Он принимает два аргумента:- Строку с именами параметров, разделенными запятыми.
- Список кортежей, где каждый кортеж представляет собой набор входных данных и ожидаемый результат.
- Тестовая функция
test_add: Она принимает параметры, указанные в декораторе, и использует их для вызова функцииadd. Затем она проверяет, что результат соответствует ожидаемому значению.
Аналогия
Представьте, что вы шеф-повар, который тестирует новый рецепт. Вместо того чтобы готовить блюдо с одним и тем же набором ингредиентов, вы пробуете разные комбинации, чтобы убедиться, что рецепт работает в любых условиях. Параметризация в тестировании — это как раз такой подход, который позволяет "попробовать" ваш код с разными "ингредиентами" (входными данными).
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться