«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.
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 во время тестовых прогонов