Каждую проверку, которую мы написали для функции capitalize()
, в тестировании принято называть утверждением. В этом уроке мы познакомимся с этим понятием подробнее.
Что такое утверждение
Утверждения — это ключевая часть тестов. Именно они проверяют функциональность кода:
from capitalize import capitalize
if capitalize('hello') != 'Hello':
raise Exception('Функция работает неверно!')
if capitalize('') != '':
raise Exception('Функция работает неверно!')
print('Все тесты пройдены!')
Можно заметить, что все проверки строятся одинаковым способом. В них есть два компонента:
- Условие
- Исключение, когда условие не выполнилось
Функция напрашивается здесь сама собой, но ее не придется делать. Python уже включает в себя специальную конструкцию assert
, которая выполняет ту же задачу.
Конструкция assert
выглядит как функция, но все же ею не является. Это специальная инструкция языка, которая принимает на вход выражение, значением которого должно быть True
, иначе выбрасывается исключение.
Поэтому все проверки в тестах инвертируются:
from capitalize import capitalize
assert capitalize('') == ''
assert capitalize('hello') == 'Hello'
https://replit.com/@hexlet/python-testing-asserts
При таких тестах assert true
означает, что все хорошо, а assert false
говорит об ошибке. Последний вариант — если функция capitalize()
работает некорректно, выбрасывает исключение с таким сообщением:
Traceback (most recent call last):
File "main.py", line 11, in <module>
assert capitalize('hello') == 'Hello'
AssertionError
Здесь показано само утверждение, на котором сработало исключение. Кроме сообщения, выводится бэктрейс, по которому можно найти утверждение.
Самостоятельная работа
- Замените в вашем репозитории ручные утверждения на использование модуля assert
- Запустите тесты и убедитесь, что они работают
- Попробуйте их сломать
- Добавьте код на GitHub
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.