Учебники

UnitTest Framework — Фреймворк

«unittest» поддерживает автоматизацию тестирования, совместное использование кода настройки и завершения для тестов, агрегирование тестов в коллекции и независимость тестов от среды отчетности.

Модуль unittest предоставляет классы, которые позволяют легко поддерживать эти качества для набора тестов.

Для этого unittest поддерживает следующие важные концепции —

  • Приспособление для тестирования — представляет собой подготовку, необходимую для выполнения одного или нескольких тестов и любых связанных действий по очистке. Это может включать, например, создание временных или прокси-баз данных, каталогов или запуск процесса сервера.

  • контрольный пример — это самая маленькая единица тестирования. Это проверяет конкретный ответ на определенный набор входов. unittest предоставляет базовый класс TestCase , который может использоваться для создания новых тестовых случаев.

  • Набор тестов — это набор тестов, наборов тестов или обоих. Это используется для объединения тестов, которые должны выполняться вместе. Наборы тестов реализуются классом TestSuite.

  • Test Runner — это компонент, который организует выполнение тестов и предоставляет результат пользователю. Участник может использовать графический интерфейс, текстовый интерфейс или вернуть специальное значение, чтобы указать результаты выполнения тестов.

Приспособление для тестирования — представляет собой подготовку, необходимую для выполнения одного или нескольких тестов и любых связанных действий по очистке. Это может включать, например, создание временных или прокси-баз данных, каталогов или запуск процесса сервера.

контрольный пример — это самая маленькая единица тестирования. Это проверяет конкретный ответ на определенный набор входов. unittest предоставляет базовый класс TestCase , который может использоваться для создания новых тестовых случаев.

Набор тестов — это набор тестов, наборов тестов или обоих. Это используется для объединения тестов, которые должны выполняться вместе. Наборы тестов реализуются классом TestSuite.

Test Runner — это компонент, который организует выполнение тестов и предоставляет результат пользователю. Участник может использовать графический интерфейс, текстовый интерфейс или вернуть специальное значение, чтобы указать результаты выполнения тестов.

Создание модульного теста

В написании простого модульного теста участвуют следующие шаги:

Шаг 1 — Импортируйте модуль unittest в вашу программу.

Шаг 2 — Определите функцию для тестирования. В следующем примере функция add () должна быть проверена.

Шаг 3 — Создайте тестовый сценарий путем создания подкласса unittest.TestCase.

Шаг 4 — Определите тест как метод внутри класса. Название метода должно начинаться с «test».

Шаг 5 — Каждый тест вызывает функцию assert класса TestCase. Есть много типов утверждений. В следующем примере вызывается функция assertEquals ().

Шаг 6 — функция assertEquals () сравнивает результат функции add () с аргументом arg2 и выдает assertionError, если сравнение не удается.

Шаг 7 — Наконец, вызовите метод main () из модуля unittest.

Live Demo

import unittest
def add(x,y):
   return x + y
   
class SimpleTest(unittest.TestCase):
   def testadd1(self):
      self.assertEquals(add(4,5),9)
      
if __name__ == '__main__':
   unittest.main()

Шаг 8 — Запустите приведенный выше скрипт из командной строки.

C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK

Шаг 9 — Следующие три могут быть возможными результатами теста —

Sr.No Сообщение и описание
1

Хорошо

Тест проходит. «A» отображается на консоли.

2

ПОТЕРПЕТЬ ПОРАЖЕНИЕ

Тест не проходит и вызывает исключение AssertionError. «F» отображается на консоли.

3

ОШИБКА

Тест вызывает исключение, отличное от AssertionError. «E» отображается на консоли.

Хорошо

Тест проходит. «A» отображается на консоли.

ПОТЕРПЕТЬ ПОРАЖЕНИЕ

Тест не проходит и вызывает исключение AssertionError. «F» отображается на консоли.

ОШИБКА

Тест вызывает исключение, отличное от AssertionError. «E» отображается на консоли.

Эти результаты отображаются на консоли как ‘.’, ‘F’ и ‘E’ соответственно.

Интерфейс командной строки

Модуль unittest можно использовать из командной строки для запуска одного или нескольких тестов.

python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

unittest поддерживает следующие параметры командной строки. Чтобы получить список всех параметров командной строки, используйте следующую команду —

Python –m unittest -h

-h, —help

Показать это сообщение

v, —verbose

Подробный вывод

-q, —quiet

Минимальный выход

-f, —failfast

Остановка при первом сбое

-c, —catch

Catch control-C и отображать результаты

-b, —buffer

Буфер stdout и stderr во время тестовых прогонов