PyUnit Tutorial: Python Unit Testing Framework (с примером)

Содержание:

Anonim

Что такое модульное тестирование?

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

Модульный тест - это тест на уровне кода со сценарием, разработанный на Python для проверки небольшой «единицы» функциональности. Модульный тест - это объектно-ориентированная структура, основанная на тестовых приспособлениях.

Методы модульного тестирования Python

Модульное тестирование Python в основном включает в себя тестирование конкретного модуля без доступа к какому-либо зависимому коду. Разработчики могут использовать такие методы, как заглушки и макеты, чтобы разделить код на «блоки» и запустить тестирование на уровне отдельных блоков.

  • Разработка через тестирование TDD: модульное тестирование следует проводить вместе с Python, и для этого разработчики используют метод разработки через тестирование. В методе TDD вы сначала разрабатываете модульные тесты Python и только затем продолжаете писать код, который будет реализовывать эту функцию.
  • Заглушки и макеты: это два основных метода, имитирующих проверяемые поддельные методы. Заглушка используется для заполнения в некоторой зависимости , необходимой для модульного тестирования для корректной работы. С другой стороны, Mock - это поддельный объект, который запускает тесты, в которые мы помещаем assert.

    Оба метода предназначены для исключения тестирования всех зависимостей класса или функции.

Фреймворк модульного тестирования Python

Чтобы упростить процесс модульного тестирования и улучшить качество вашего проекта, рекомендуется Python Unit Testing Framework. Фреймворк модульного тестирования включает

  • PyUnit: PyUnit поддерживает фикстуры, тестовые примеры, наборы тестов и средство запуска тестов для автоматического тестирования кода. В PyUnit вы можете организовать тестовые примеры в наборы с одинаковыми приспособлениями.
  • Nose: Встроенные плагины Nose помогают с захватом вывода, покрытием кода, тестами документов и т. Д. Синтаксис Nose довольно прост и снижает барьеры для написания тестов. Он расширяет Python unittest, чтобы упростить тестирование.
  • Doctest: Скрипт тестирования Doctest находится в строке документации с небольшой функцией внизу файла. Doctest позволяет вам протестировать ваш код, запустив примеры, включенные в документацию, и убедившись, что они вернули ожидаемые результаты. Вариант использования doctest менее подробен и не учитывает особые случаи. Они полезны как выразительная документация по основному варианту использования модуля и его компонентов.

Модульное тестирование с PyUnit

Pyunit - это порт JUnit на Python. В составе Pyunit в модуле unittest есть пять ключевых классов.

  • Класс TestCase : класс TestCase несет в себе процедуры тестирования и предоставляет хуки для создания каждой процедуры и последующей очистки.
  • Класс TestSuite : он обслуживает как контейнер коллекции и может содержать несколько объектов testcase и несколько объектов testsuites.
  • Класс TestLoader : этот класс загружает тестовые наборы и наборы, определенные локально или из внешнего файла. Он генерирует объекты набора тестов, которые содержат эти наборы и кейсы.
  • Класс TextTestRunner : для запуска тестов он обслуживает стандартную платформу для выполнения тестов.
  • Класс TestResults : он предлагает стандартный контейнер для результатов теста.

Разработка тестового примера для тестирования Python с использованием PyUnit

Модульный тест предоставляет базовый класс, тестовый пример, который можно использовать для создания новых тестовых примеров. Для разработки тестового примера используются три набора методов:

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

В первом наборе находятся крючки до и после тестирования. Метод setup () начинается перед каждой процедурой тестирования, а teardown () - после процедуры.

Второй набор методов контролирует выполнение теста. Оба метода принимают на входе строку сообщения и оба отменяют текущий тест. Но метод skiptest () прерывает текущий тест, а метод fail () полностью его не выполняет.

Последний или третий метод помогает определиться с тестом. Метод id () возвращает строку, состоящую из имени объекта тестового набора и процедуры тестирования. А метод shortDescription () возвращает комментарий docstr при запуске каждой процедуры тестирования.

Преимущества использования модульного тестирования Python

  • Это помогает вам обнаруживать ошибки на ранних этапах цикла разработки.
  • Это помогает вам писать лучшие программы
  • Он легко синхронизируется с другими методами и инструментами тестирования.
  • В нем будет намного меньше ошибок
  • В будущем легче модифицировать с меньшими последствиями