Учебник по PyUnit: Python Платформа модульного тестирования (с примером)
⚡ Умное резюме
Python Модульное тестирование проверяет небольшие блоки кода изолированно, чтобы выявлять ошибки на ранних стадиях. Здесь вы изучите методы модульного тестирования, фреймворк PyUnit (unittest), его ключевые классы, как разрабатывать тестовые примеры и рабочий пример.

Что такое модульное тестирование?
Модульное тестирование in Python делается для выявления ошибок на ранней стадии разработки приложения, когда ошибки менее повторяются и их исправление обходится дешевле.
Модульный тест — это скриптовый тест на уровне кода, разработанный в Python для проверки небольшой «единицы» функциональности. Модульное тестирование — это объектно-ориентированная среда, основанная на тестовых приспособлениях.
Python Методы модульного тестирования
Python Модульное тестирование в основном включает в себя тестирование конкретного модуля без доступа к какому-либо зависимому коду. Разработчики могут использовать такие методы, как заглушки и макеты, для разделения кода на «модули» и запуска тестирования на уровне модулей для отдельных частей.
- TDD для разработки через тестирование: Модульное тестирование должно проводиться вместе с Python, и для этого разработчики используют метод разработки через тестирование. В методе TDD вы сначала проектируете Python Модульные тесты, и только потом вы продолжаете писать код, реализующий эту функцию.
-
Заглушки и моки: Это два основных метода, которые имитируют тестируемые поддельные методы. А Пень используется для заполнения некоторой зависимости, необходимой для правильного запуска модульного теста. А издеваться с другой стороны, это поддельный объект, который запускает тесты, в которые мы помещаем утверждение.
Намерения обоих методов одинаковы: исключить тестирование всех зависимостей класса или функции.
Python Платформа модульного тестирования
Чтобы упростить процесс модульного тестирования и улучшить качество вашего проекта, рекомендуется Python Фреймворк модульного тестирования. Структура модульного тестирования включает в себя
-
ПиЮнит: PyUnit поддерживает приспособления, тестовые примеры, наборы тестов и средство запуска тестов для автоматического тестирования кода. В PyUnit вы можете организовывать тестовые примеры в наборы с одинаковыми фикстурами.
-
Нос: Встроенные плагины Nose помогают вам захватывать выходные данные, покрытие кода, документацию и т. д. Синтаксис Nose довольно прост и снижает барьеры при написании тестов. Он расширяет Python unittest, чтобы упростить тестирование.
- Доктест: Скрипт тестирования Doctest находится в строке документации с небольшой функцией в конце файла. Doctest позволяет вам протестировать ваш код, запустив примеры, включенные в документацию, и проверив, что они вернули ожидаемые результаты. Вариант использования doctest менее подробен и не охватывает особых случаев. Они полезны в качестве выразительной документации основного варианта использования модуля и его компонентов.
Модульное тестирование с помощью PyUnit
Пюнит – это Python порт JUnit. В составе Pyunit модуль unittest содержит пять ключевых классов.
- TestCase класс: Класс TestCase содержит процедуры тестирования и предоставляет перехватчики для создания каждой процедуры и последующей очистки.
- Класс TestSuite: он выступает в качестве контейнера сбора и может содержать несколько объектов тестовых наборов и несколько объектов тестовых наборов.
- Класс TestLoader: этот класс загружает тестовые примеры и наборы, определенные локально или из внешнего файла. Он генерирует объекты тестового набора, которые содержат эти наборы и случаи.
- Класс TextTestRunner: Для запуска тестов предусмотрена стандартная платформа для выполнения тестов.
- Класс ТестРезультатс: Предлагает стандартный контейнер для результатов испытаний.
Разработка тестового примера для Python Тестирование с использованием PyUnit
Модульный тест предоставляет базовый класс — тестовый пример, который можно использовать для создания новых тестовых примеров. Для разработки тестового примера используются три набора методов:
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
В первый набор входят крючки для предварительного и последующего тестирования. Метод setup() начинается перед каждой процедурой тестирования, а метод Teardown() — после процедуры.
Второй набор методов контролирует выполнение теста. Оба метода принимают на вход строку сообщения и оба отменяют текущий тест. Но метод Skiptest() прерывает текущий тест, а методfail() полностью его завершает.
Последний или третий метод помогает определить тест. Метод id() возвращает строку, состоящую из имени объекта тестового набора и тестовой процедуры. И метод короткийDescription() возвращает комментарий docstr при запуске каждой процедуры тестирования.
Python Пример модульного теста
В приведенном ниже примере проверяется простая функция add() с помощью модуля unittest. Каждый метод, названный с префиксом test_, запускается автоматически, а assertEqual проверяет результат на соответствие ожидаемому значению.
import unittest def add(a, b): return a + b class TestAdd(unittest.TestCase): def test_add_positive(self): self.assertEqual(add(2, 3), 5) def test_add_negative(self): self.assertEqual(add(-1, -1), -2) if __name__ == "__main__": unittest.main()
Сохраните код и запустите его с помощью команды `python filename.py`. Программа запуска модульных тестов сообщит, сколько тестов прошло успешно, а сколько — нет.
Преимущества использования Python Модульное тестирование
- Это поможет вам обнаружить ошибки на ранних этапах цикла разработки.
- Это поможет вам писать лучшие программы.
- Он легко синхронизируется с другими методами и инструментами тестирования.
- Там будет намного меньше ошибок
- В будущем легче внести изменения с меньшими последствиями.



