Python/Справочник по библиотеке Python 2.6: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 115:
 
<p>Каркас модульного тестирования Python, иногда называемый «PyUnit», является Python-версией JUnit Кента Бека и Эрика Гамма. JUnit, в свою очередь, — Java версия каркаса тестирования Smalltalk написанного Кентом. Все перечисленные каркасы являются де-факто стандартными каркасами модульного тестирования для соответствующих языков.</p>
<p>'''unittest''' поддерживает автоматизацию тестов, общее использование кода инициализации и завершения тестов, объединение тестов в коллекции и независимость тестов от reportingкаркаса frameworkвыводящего результаты тестирования. Классы модуля '''unittest''' упрощают соблюдение перечисленных требований для комплектасерии тестов.</p>
<p>Для достижения таких результатов,целей в '''unittest''' реализует поддержку следующихреализуются важныйследующие понятийпонятия:</p>
 
<ul><li>
Окружение теста (test fixture)<br>
Под окружением теста подразумевается подготовкаустановка начальных данных, необходимая для выполнения одного или нескольких тестов, а также любые связанные с этим действия по сбросу начальных данных к исходному положению по завершении теста. Эти процессы могут включать, например, создание временных или промежуточных БД, каталогов, или запуск серверного процесса;</li><li>
Тестовый вариант (test case).<br>
Тестовый вариант является наименьшим элементом тестирования. Он проверяет соответствие отклика объекта определенным входным данным. В unittest тестовые варианты создаются с помощью базового класса '''TestCase''';
</li><li>Набор тестов (test suite)<br>
Набор тестов это коллекция тестовых вариантов, наборов тестов, или и того и другого сразу. Набор используется для объединения тестов которые должны выполняться вместе;
</li><li>Исполнитель тестов<br>
Исполнитель тестов это компонент управляющий выполнением тестов и сообщающий пользователю результаты прогонавыполнения. Исполнитель может использовать графический, или текстовый интерфейс, либо возвращать определенное значение, соответствующее результату выполнения тестов.
</li></ul>
 
Понятия тестового варианта и окружения теста реализуются классами '''TestCase''' и '''FunctionTestCase'''; первый следует использовать при создании новых тестов, а второй используется при интеграции кода уже написанных тестов с каркасом модульных тестов. При создании тестового окружения с помощью '''TestCase''', методы '''setUp()''' и '''tearDown()''' могут перезагружатьсязамещаться для обеспечения инициализации и сброса окружения. При использовании '''FunctionTestCase''', для этих целей в конструктор могут передаваться уже существующие функции. При выполнении теста сначала запускается инициализация окружения, если она проходит успешно, то после завершения теста запускается функция сброса окружения, вне зависимости от результатов теста. Для каждого экземпляра '''TestCase''' выполняется только единственный тестовый метод, поэтому для каждого теста создается новое окружение.
 
Наборы тестов реализуются с помощью класса '''TestSuite'''. Данный класс позволяет объединять отдельный тесты и наборы тестов. При выполнении набора, выполняются все тесты добавленные непосредственно в набор и в дочерние тестовые наборы.
 
Исполнитель теста это объект предоставляющий единственный метод '''run()''', принимающий экземпляр класса '''TestCase''' или '''TestSuite''' как параметр и возвращающий результирующий объект. Результирующим объектом является экземпляр класса '''TestResult'''. В комплект '''unittest''' входит пример исполнителя теста – класс '''TextTestRunner''', возвращающий результаты тестов в потоке сообщений об ошибках по умолчанию. Альтернативные исполнители тестов могут реализовываться для других окруженийсред (таких как графическоеграфическая окружениесреда) без необходимости наследования от определенного класса
 
Смотрите также:
 
Модуль '''doctest''' – еще один модуль поддержки тестирования с совершенно другим «ароматом».
 
Простое тестирование SmallTalk: С шаблонами – Оригинальная статья Кента Бека по тестовым каркасам использующим шаблоны, которые использует и '''unittest'''
 
'''Nose''' и '''py.test''' – Сторонние каркасы для модульного тестирования с более простым синтаксисом написания тестов.
 
Например '''func(10) == 42.'''
 
'''python-mock''' и '''minimock''' – Инструменты для создания тестовых квази-объектов (объектов имитирующих внешние ресурсы)