Язык программирования Python - [14]

Шрифт
Интервал

) и операцию >-=. Метод >__init__ — конструктор объекта (в данном случае — множества).

Модуль unittest

При разработке программного обеспечения рекомендуется применять так называемые регрессионные испытания. Для каждого модуля составляется набор тестов, по возможности таким образом, чтобы проверялись не только типичные вычисления, но и «крайние», вырожденные случаи, чтобы испытания затронули каждую ветку алгоритма хотя бы один раз. Тест для данного модуля (написанный сразу после того, как определен интерфейс модуля) находится в файле >test_Sieve.py:

># file: test_Sieve.py

>import Sieve, sets

>import unittest


>class TestSieve(unittest.TestCase):


> def setUp(self):

>  pass


> def testone(self):

>  primes = Sieve.primes(1)

>  self.assertEqual(primes, sets.Set())


> def test100(self):

>  primes = Sieve.primes(100)

>  self.assert_(primes == sets.Set([2, 3, 5, 7, 11, 13,

>   17, 19, 23, 29, 31, 37, 41, 43, 47,

>   53, 59, 61, 67, 71, 73, 79, 83, 89, 97]))


>if __name__ == '__main__':

> unittest.main()

Тестовый модуль состоит из определения класса, унаследованного от класса >unittest.TestCase, в котором описывается подготовка к испытаниям (метод >setUp) и сами испытания — методы, начинающиеся на >test. В данном случае таких испытаний всего два: в первом испытывается случай >N=1, а во втором — >N=100.

Запуск тестов производится выполнением функции >unittest.main(). Вот как выглядят успешные испытания:

>$ python test_Sieve.py

>..

>----------------------------------------------------------

>Ran 2 tests in 0.002s


>OK

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

Кстати, сам Python и его стандартная библиотека имеют тесты для каждого модуля — они находятся в каталоге >test в месте, где развернуты файлы поставки Python, и являются частью пакета >test.

Модуль pydoc

Успех проекта зависит не только от обеспечения эффективного и качественного кода, но и от качества документации. Утилита >pydoc аналогична команде >man в Unix:

>$ pydoc Sieve

>Help on module Sieve:


>NAME

>    Sieve — Модуль для вычисления простых чисел от 2 до N


>FILE

>    Sieve.py


>FUNCTIONS

>    primes(N)

>         Возвращает все простые от 2 до N

Эта страница помощи появилась благодаря тому, что были написаны строки документации — как ко всему модулю, так и к функции >primes(N).

Стоит попробовать запустить >pydoc следующей командой:

>pydoc –p 8088

И направить браузер на URL http://127.0.0.1:8088/ — можно получить документацию по модулям Python в виде красивого web–сайта.

Узнать другие возможности >pydoc можно, подав команду >pydoc pydoc.

Пакет docutils

Этот пакет и набор утилит пока что не входит в стандартную поставку Python, однако о нем нужно знать тем, кто хочет быстро готовить документацию (руководства пользователя и т.п.) для своих модулей. Этот пакет использует специальный язык разметки (>ReStructuredText), из которого потом легко получается документация в виде HTML, LaTeX и в других форматах. Текст в формате RST легко читать и в исходном виде. С этим инструментом можно познакомиться на http://docutils.sourceforge.net

Пакет distutils

Данный пакет предоставляет стандартный путь для распространения собственных Python–пакетов. Достаточно написать небольшой конфигурационный файл >setup.py, использующий >distutils, и файл с перечислением файлов проекта >MANIFEST.in, чтобы пользователи пакета смогли его установить командой

>python setup.py install

Тонкости работы с >distutils можно изучить по документации.

Взаимодействие с операционной системой

Различные операционные системы имеют свои особенности. Здесь рассматривается основной модуль этой категории, функции которого работают на многих операционных системах.

Модуль os

Разделители каталогов и другие связанные с этим обозначения доступны в виде констант.

КонстантаЧто обозначает
>os.curdirТекущий каталог
>os.pardirРодительский каталог
>os.sepРазделитель элементов пути
>os.altsepДругой разделитель элементов пути
>os.pathsepРазделитель путей в списке путей
>os.defpathСписок путей по умолчанию
>os.linesepПризнак окончания строки

Программа на Python работает в операционной системе в виде отдельного процесса. Функции модуля >os дают доступ к различным значениям, относящимся к процессу и к среде, в которой он исполняется. Одним из важных объектов, доступных из модуля >os, является словарь переменных окружения >environ. Например, с помощью переменных окружения web–сервер передает некоторые параметры в CGI–сценарий. В следующем примере можно получить переменную окружения >PATH:

>import os

>PATH = os.environ['PATH']

Большая группа функций посвящена работе с файлами и каталогами. Ниже приводятся только те, которые доступны как в Unix, так и в Windows.

>access(path, flags)Проверка доступности файла или каталога с именем >path. Режим запрашиваемого доступа указывается значением >flags, составленных комбинацией (побитовым ИЛИ) флагов >os.F_OK (файл существует), >os.R_OK (из файла можно читать),

Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.