» » Книга «Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию»

 

Книга «Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию»

Автор: admin от 4-09-2019, 13:55, посмотрело: 214

Книга «Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию»
Привет, Хаброжители! «Путь Python» позволяет отточить ваши профессиональные навыки и узнать как можно больше о возможностях самого популярного языка программирования. Вы научитесь писать эффективный код, создавать лучшие программы за минимальное время и избегать распространенных ошибок. Пора познакомиться с многопоточными вычислениями и мемоизацией, получить советы экспертов в области дизайна API и баз данных, а также заглянуть внутрь Python, чтобы расширит понимание языка. Вам предстоит начать проект, поработать с версиями, организовать автоматическое тестирование и выбрать стиль программирования для конкретной задачи. Потом вы перейдете к изучению эффективного объявления функции, выбору подходящих структур данных и библиотек, созданию безотказных программ, пакетам и оптимизации программ на уровне байт-кода.

python.org ?. Не существует варианта, при котором тест не найдет ни одной заданной строки на выбранной веб-странице. Чтобы получить отрицательный результат, необходимо изменить страницу, а этого сделать нельзя. Но с помощью mock можно пойти на хитрость и изменить поведение запроса так, чтобы он возвращал ответ-пустышку с выдуманной страницей, не содержащей заданной строки. Это позволит протестировать отрицательный сценарий, в котором python.org не содержит заданной строки, и убедиться, что программа обрабатывает такой случай корректно.



В этом примере используется версия декоратора mock.patch() ?. Поведение объекта-пустышки не меняется, и было проще показать пример в контексте тестовой функции.



Использование объекта-пустышки поможет сымитировать любую проблему: возвращение сервером ошибки 404, ошибку ввода-вывода или ошибку задержки сети. Мы можем убедиться, что код возвращает правильные значения или вызывает нужное исключение в каждом случае, что гарантирует ожидаемое поведение кода.



Выявление непротестированного кода с помощью coverage



Отличным дополнением для модульного тестирования является инструмент coverage [Покрытие кода — мера, используемая при тестировании. Показывает процент исходного кода программы, который был выполнен в процессе тестирования — ред.], который находит непротестированные части кода. Он использует инструменты анализа и отслеживания кода для выявления тех строк, которые были выполнены. В модульном тестировании он может выявить, какие части кода были задействованы многократно, а какие вообще не использовались. Создание тестов необходимо, а возможность узнать, какую часть кода вы забыли покрыть тестами, делает этот процесс приятнее.



Установите модуль coverage через pip, чтобы получить возможность использовать его через свою командную оболочку.



ПРИМЕЧАНИЕ



Команда также может называться python-coverage, если установка модуля происходит через установщик вашей ОС. Пример такого случая — ОС Debian.




Использовать coverage в автономном режиме довольно просто. Он показывает те части программы, которые никогда не запускаются и стали «мертвым грузом» — таким кодом, убрать который без изменения работоспособности программы уже не получится. Все тестовые инструменты, которые обсуждались ранее в главе, интегрированы с coverage.



При использовании pytest установите плагин pytest-cov через pip install pytest-pycov и добавьте несколько переключателей для генерации детального вывода непротестированного кода (листинг 6.13).

Листинг 6.13. Использование pytest и coverage



$ pytest --cov=gnocchiclient gnocchiclient/tests/unit
---------- coverage: platform darwin, python 3.6.4-final-0 -----------
Name                                          Stmts Miss Branch BrPart Cover
---------------------------
gnocchiclient/__init__.py                         0    0      0      0  100%
gnocchiclient/auth.py                            51   23      6      0   49%
gnocchiclient/benchmark.py                      175  175     36      0    0%
--snip--
---------------------------
TOTAL                                          2040 1868    424      6    8%

=== passed in 5.00 seconds ===
Опция --cov включает вывод отчета coverage в конце тестирования. Необходимо передать имя пакета в качестве аргумента, чтобы плагин должным образом отфильтровал отчет. Вывод будет содержать строки кода, которые не были выполнены, а значит, не тестировались. Все, что вам останется, — открыть редактор и написать тест для этого кода.



Модуль coverage еще лучше — он позволяет генерировать понятные отчеты в формате HTML. Просто добавьте -–cov-report-html, и в директории htmlcov, откуда вы запустите команду, появятся HTML-страницы. Каждая страница покажет, какие части исходного кода были или не были запущены.



Если вы хотите пойти еще дальше, то используйте –-cover-fail-under-COVER_MIN_PERCENTAGE, которая приведет к сбою тестового набора, если он не покрывает минимальный процент кода. Хотя большой процент покрытия — это хорошая цель, а инструменты тестирования полезны для получения информации о состоянии тестового покрытия, сама по себе величина процента не особо информативна. Рисунок 6.1 показывает пример отчета coverage с указанием процента покрытия.



Например, покрытие кода тестами на 100 % — достойная цель, но это не обязательно означает, что код тестируется полностью. Эта величина лишь показывает, что все строки кода в программе выполнены, но не сообщает, что были протестированы все условия.



Стоит использовать информацию о покрытии с целью расширения набора тестов и создания их для кода, который не запускается. Это упрощает поддержку проекта и повышает общее качество кода.



Книга «Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию»




Об авторе



Джульен Данжу занимается хакингом бесплатного ПО около двадцати лет, а программы на Python разрабатывает уже почти двенадцать лет. В настоящее время руководит проектной группой распределенной облачной платформы на основе OpenStack, которая владеет самой большой из существующих баз открытого кода Python, насчитывающей около двух с половиной миллионов строк кода. До разработки облачных сервисов Джульен занимался созданием менеджера окон и способствовал развитию многих проектов, например Debian и GNU Emacs.



О научном редакторе



Майк Дрисколл программирует на Python более десяти лет. Долгое время он писал о Python в блоге The Mouse vs. The Python. Автор нескольких книг по Python: Python 101, Python Interviews и ReportLab: PDF Processingwith Python. Найти Майка можно в Twitter и на GitHub: @driscollis.



» Более подробно с книгой можно ознакомиться на сайте издательства

» Оглавление

» Отрывок



Для Хаброжителей скидка 25% по купону — Python



По факту оплаты бумажной версии книги на e-mail высылается электронная книга.

Источник: Хабр / Интересные публикации

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *