Каждую проверку, которую мы написали для функции 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"
При таких тестах assert True означает, что все хорошо, а assert False говорит об ошибке. Если проверка не пройдет, и capitalize() работает некорректно, генерируется исключение с таким сообщением:
Traceback (most recent call last):
File "main.py", line 11, in <module>
assert capitalize('hello') == 'Hello'
AssertionError
Здесь показано само утверждение, на котором сработало исключение. Кроме сообщения, выводится бэктрейс, по которому можно найти утверждение.
Самостоятельная работа
- Замените в вашем репозитории ручные утверждения на использование модуля assert
- Запустите тесты и убедитесь, что они работают
- Попробуйте их сломать
- Добавьте код на GitHub
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.