assert
Assertions (утверждения) — это инструкции, которые «утверждают» определенный случай в программе. В Python они выступают булевыми выражениями, которые проверяют, является ли условие истинным или ложным. Если оно истинно, то программа ничего не делает и переходит к выполнению следующей строчки кода.
Но если оно ложно, то программа останавливается и возвращает ошибку.
Следующий синтаксис — это базовая структура инструкций утверждения в Python.
Если же нужно добавить сообщение для вывода при ложном условии, то синтаксис будет таким.
Это сообщение позволит лучше понять, почему код не сработал.
Пример assert
Если нужно симулировать или выполнить отладку кода, чтобы узнать, что именно происходит на определенном этапе, то «утверждения» в Python отлично для этого подходят.
Именно инструмент отладки останавливает программу, как только возникает какая-то ошибка. Он также показывает, где именно она произошла.
Инструкция assert принимает выражение и необязательное сообщение;
Она используется для проверки типов, значений аргумента и вывода функции;
А также для отладки, поскольку приостанавливает программу в случае ошибки.
Вот пример работы утверждений в Python.
КОПИРОВАТЬ
В этом примере нужно, чтобы пользователь не оставлял параметры пустыми. Если этого не сделать, вернется ошибка Assertion Error
. Вот пример вывода:
В этом случае параметры были переданы, поэтому функция вернула нужный результат.
Теперь попробуем ничего не передавать.
КОПИРОВАТЬ
Длина массива ranks
оказалась 0, и python вернул ошибку Assertion Error
.
Исключения Assertion Error
можно перехватывать и обрабатывать как и любые другие исключения с помощью try-except. Но если их обработать неправильно, то программа остановится и вернет traceback
.
Однако в примере выше она не возвращает ошибку с нужным сообщением. Ее можно написать самостоятельно. Вот как это делается.
КОПИРОВАТЬ
Вторым аргументом к assert
в примере выше было передано сообщение, которое позже появится в выводе.
Assert с сообщением об ошибки
Рассмотрим еще один пример с делением на 0.
КОПИРОВАТЬ
В этом примере, если делителем будет ноль, то assert
вернет сообщение с ошибкой. Посмотрим на вывод.
На третьей сверху строчке написана сама инструкция assert
. Именно здесь проверяется, не является ли переменная y
равной 0. Если она больше 0, то условие истинно, и код возвращает требуемый результат.
Но если вызвать метод division()
со вторым аргументом 0, то условие assert
будет ложным.
По этой причине и возникает исключение Assertion Error
. Именно оно возвращает ошибку с сообщением «Нельзя делить на 0».
Методы assert
Метод
Проверка на
Работает с
assertEqual(x, y)
x == y
assertNotEqual(x, y)
x != y
assertTrue(x)
bool(x) равно True
assertFalse(x)
bool(x) равно False
assertIs(x, y)
x это y
3.1
assertIsNot(x, y)
x это не y
3.1
assertIsNone(x)
x это None
3.1
assertIsNotNone(x)
x это не None
3.1
assertIn(x, y)
x в y
3.1
assertNotIn(x, y)
x не в y
3.1
assertIsInstance(x, y)
isinstance(x, y)
3.2
assertNotIsInstance(x,y)
не isinstance(x, y)
3.2
Как проверить, что функция возвращает исключение
Можно использовать TestCase.assertRaises
(или TestCase.failUnlessRaises
) из модуля unittest
.
КОПИРОВАТЬ
Вывод:
Распространенные ошибки
Есть два важных момента касательно утверждений в Python, о которых нужно помнить.
Не стоит использовать assert для валидации данных, ведь это приводит к появлению проблем с безопасностью и багов.
Важно не писать такие утверждения, которые всегда будут истинными.
Ключевые моменты assert в Python
Утверждение (Assertion) — это условие или булево выражение, которое должно быть истинным.
Инструкция assert принимает выражение и необязательное сообщение.
Инструкция assert используется для проверки типов, значений аргументов и вывода функций.
Это также инструмент для отладки, ведь он останавливает программу при появлении ошибки.
В первую очередь утверждения используются для уведомления разработчиков о неотслеживаемых ошибках. Они не должны сообщать об условия ошибок, таких как «файл не был найден», где пользователь может попытаться исправиться и повторить действия.
Утверждения — это внутренняя проверка для программы. Они работают за счет объявления невозможных условий в коде. Если эти условия не проходят, значит имеется баг.
https://pythonru.com/uroki/35-instrukcija-assert-dlja-nachinajushhih
Last updated