← Назад ко всем вопросам

Что такое parametrize?

1️⃣ Как кратко ответить

Parametrize — это метод в тестировании, который позволяет запускать один и тот же тест с разными наборами входных данных. В Python, библиотека pytest предоставляет декоратор @pytest.mark.parametrize, который упрощает создание параметризованных тестов, улучшая покрытие тестами и снижая дублирование кода.

2️⃣ Подробное объяснение темы

Параметризация (или parametrize) — это техника, которая позволяет запускать один и тот же тест с различными наборами данных. Это особенно полезно, когда вы хотите убедиться, что ваш код работает корректно с разными входными значениями.

Зачем это нужно?

  1. Улучшение покрытия тестами: Параметризация позволяет протестировать функцию или метод с множеством различных входных данных, что помогает выявить ошибки, которые могут возникнуть только при определенных условиях.

  2. Снижение дублирования кода: Вместо написания нескольких тестов, которые отличаются только входными данными, вы можете написать один параметризованный тест, что делает ваш код более чистым и поддерживаемым.

  3. Экономия времени: Параметризация позволяет быстро и легко добавлять новые тестовые случаи, просто добавляя новые наборы данных.

Как это работает?

В 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. Затем она проверяет, что результат соответствует ожидаемому значению.

Аналогия

Представьте, что вы шеф-повар, который тестирует новый рецепт. Вместо того чтобы готовить блюдо с одним и тем же набором ингредиентов, вы пробуете разные комбинации, чтобы убедиться, что рецепт работает в любых условиях. Параметризация в тестировании — это как раз такой подход, который позволяет "попробовать" ваш код с разными "ингредиентами" (входными данными).

Тема: Тестирование
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки