Глава 13 · Автоматизация с помощью функций

Тестируем функции

Функцию можно проверить отдельно от всей программы — без пользовательского ввода и без запуска приложения целиком.

Главное практическое преимущество функций

testiruemaya_funkciya.py
def rectangle_area(w, h):
    return w * h
proverki.py
rectangle_area(2, 3) == 6
rectangle_area(0, 5) == 0
rectangle_area(10, 1) == 10
Не нужен ни пользовательский ввод, ни всё приложение целиком
Функцию можно проверить в изоляции — вызвать напрямую с конкретными значениями и сравнить с ожидаемым результатом. Это и есть идея тестирования отдельных единиц кода.

Таблица тестов

ВходОжиданиеФактПройден?
classify_score(95)«отлично»«отлично»
classify_score(60)«хорошо»«хорошо»
classify_score(0)«пересдача»«пересдача»
classify_score(100)граница сверху?проверить
Граничные случаи — из главы 9
Тестовая таблица — прямое продолжение граничного тестирования условий из главы 9: проверяем не только «обычные» значения, но и границы диапазонов.

assert — лёгкая проверка предположения

assert_primer.py
assert rectangle_area(2, 3) == 6
assert rectangle_area(0, 5) == 0
print("Все проверки пройдены")
assert_padaet.py
assert rectangle_area(2, 3) == 7
# AssertionError
assert — инструмент разработчика, не проверка пользовательского ввода
assert проверяет предположение и поднимает AssertionError, если оно ложно — это удобно для самопроверки во время разработки и отладки. Это НЕ механизм валидации пользовательского ввода и не защита безопасности — для проверки данных, полученных от пользователя, используются обычные условия (глава 9), как мы уже делали.

Рабочий процесс: контракт → примеры → реализация → проверка

Требованиечто функция должнаделатьПримерывход → ожидаемыйвыходРеализацияпишем defВызовс тестовымизначениямиПроверкасовпало ли сожиданием
Этот порядок мысли — прямой предвестник полноценного unit-тестирования, которое встретится в будущих главах
Практика: тестируем функцию по таблице
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →