[БЕЗ_ЗВУКА] [БЕЗ_ЗВУКА] Здравствуйте, уважаемые слушатели. Сейчас я покажу вам, как быстро и коротко тестировать программу, при этом делать это даже до написания. Собственно, мы сейчас рассмотрим написание функции, которая проверяет корректность скобочной структуры. Разработка функции начинается с проработки ее интерфейса. Допустим, интерфейс уже проработан, мы выбрали название функции, что она получает, что она возвращает, но тем не менее вопросы остаются. Даже просто при чтении этой документ-строки еще ничего не понятно. Ну, написано, что она проверяет корректность скобочной структуры. А какие-то примеры хотелось бы увидеть. Так вот, оказывается, мы не только можем добавить эти примеры в документ-строку, но и сделать их действующими. Есть стандартная библиотека doctest, она работает очень просто. Сейчас вы увидите, как это будет выглядеть. Добавим несколько примеров, например, корректная скобочная структура — это вот такая, в которой у нас две круглые, например, там еще несколько круглых открывается, столько же закрывается. Я оформляю это сейчас следующим образом: как если бы я вызвал это в интерпретаторе. Функция в этом случае должна была бы вернуть true. Ну и еще какой-нибудь пример добавим, так чтобы там были не только круглые, но и квадратные скобки. Вполне это тоже должна быть корректная скобочная структура. содержащая и круглые и квадратные скобки. И несколько false примеров, которые тоже должны нам пояснить, что подразумевается под корректной и некорректной. Например, одна закрывающаяся скобка — некорректный пример, когда не хватает закрывающихся скобок — тоже некорректный пример. И самый непростой некорректный пример — когда у нас квадратные и круглые находятся в неадекватном положении. Перед тем как писать текст этой функции, я заставлю эти комментарии выполняться как маленькие, компактные юнит-тесты. Собственно, документ-строка, которая сразу же отправляется на тестирование. Итак, для этого достаточно всего лишь подключить библиотеку doctest и вызвать в этой библиотеке одну-единственную функцию — testmod. Все. После этого мы получим отчет по выполнению этих комментариев. На каждый завалившийся комментарий мы получаем, что expected true, got nothing. Функция ничего не возвращает. Естественно, если я туда добавлю какой-нибудь return true, то часть тестов у меня пройдет, но это не означает, что она работает. Просто так вот посмотрим, что он возвращает мне теперь, печатает только те тесты, на которых она завалилась. Давайте добавим теперь корректную реализацию этой функции и посмотрим, что мы увидим в этом случае. В этом случае при запуске тестов мы не увидим ничего. Реально тестирование все равно производится, но мы его не видим, и это хорошо. Зачем нам лишний раз видеть это тестирование? Фактически такое тестирование является простейшим, примитивным, не требует ничего и может быть... Конечно, оно не покрывает вашу программу тестами, точно так же, как это сделал бы профессиональный тестировщик, нет реального тест-дизайна, но тем не менее мы прямо в процессе программирования, еще разрабатывая интерфейс функции, прописывая документ-строку, уже написали тесты. Простым и естественным способом. [ЗВУК] [БЕЗ_ЗВУКА]