В наших первый двух курсах проверка кода происходит как правило скрытно, такая скрытая проверка с тестами или другими проверками нужна для того, чтобы вам она никак не мозолила глаза и чтобы вы могли спокойно писать решение к задачам, но в этом курсе вам придётся сталкиваться с полем для проверки кода практически в каждой последующей задаче. Перед тем как рассмотреть пример задачи с ассертами(тестами), давайте вообще разберёмся в том, что такое ассерты.
Assertions (утверждения) — это инструкции, которые «утверждают» определенный кейс в программе. В Python они выступают булевыми выражениями, которые проверяют, является ли условие истинным или ложным. Если оно истинно, то программа ничего не делает и переходит к выполнению следующей строчки кода.
То есть выходит, что при запуске такого кода:
x = 'please print me'
assert x == 'please don_t print me', 'Переменная x не ссылается на строку please don_t print me'
print(x)
Программа упадёт с ошибкой(протестировано на Python 3.11.9):
assert x == 'please don_t print me', 'Переменная x не ссылается на строку please don_t print me'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Переменная x не ссылается на строку please don_t print me
То есть мы не увидим вывода переменной x так-как в ней хранится строка 'please print me'
а не 'please don_t print me'
, а в тесте мы бы хотели увидеть именно 2 из этих строк.
Давайте взглянем на синтаксис обычной проверки с assert
:
assert условие, 'ошибка которая должна выводиться в случае если условие не срабатывает(не возвращает True)'
А вот пример тестирования реальной задачи из этого модуля:
Мой код для решения задачи помещается в 13 строк, с учётом комментария, в котором чётко написано, что вот оно моё место для написания решения задачи, но что же было заготовлено коварными создателями сайта ниже???
А дальше идёт наш код с ассертами, в котором порой используются довольно сложные вещи для проверки вашего кода и в некоторых задачах, на ваши 15-25 строчек кода будут идти наши 50 строчек тестирования, то есть под большинство задач тесты заготовлены заранее в нижнем блоке кода.
-А стоит ли мне трогать этот блок?
Нет мы настоятельно просим вас не трогать эти блоки с тестирование: не удалять, не изменять и не добавлять код в этих блоках. Если вы случайно изменили или удалили или добавили туда код и не помните то, как он до этого выглядел, просто скопируйте код который вы успели написать для решения(Это нужно, чтобы не писать код заново) нажмите Сбросить решение и ваш код сброситься до начальных значений.
В каждом ассерте мы постарались передать удобные для вашего понимания строки, чтобы они реально могли помогать вам при исправлении ошибок.
Наша рекомендация заключается в том, чтобы вы пытались решать непростые для вас задачи в редакторах кода по типу VSCode или IDE по типу PyCharm. Эти программы, позволяют вам удобнее работать с кодом. Вот например, если бы я решал прошлую задачу, я бы кликнул мышкой на любое место в поле для ввода кода, нажал бы CTRL + A, чтобы скопировать весь код заготовленный, написал бы решение в нужном месте и запустил бы программу, и пытался бы решить задачу до тех пор, пока не перестанет выскакивать AssertionError:......
, и как только все тесты пройдут , я скопирую решение и вставлю его на сайт, чтобы посмотреть на результат выполнения задачи
В тестах к задачам возможны ошибки, если увидите какой-то странный баг, напишите нам в комментарии или в в форму обратной связи - https://pyhub.ru/feedback/, но пишите только в том случае, если вы на 101% уверенны, что ошибка не в вашем коде. Порой мы не замечаем кучу мелочей)
В общем, мы желаем вам удачи! И даже если вы читатель, который не купил полный доступ к курсу, надеюсь это лекция была для вас полезна!