Фреймворк UnitTest - Фреймворк
«unittest» поддерживает автоматизацию тестирования, совместное использование кода настройки и выключения для тестов, объединение тестов в коллекции и независимость тестов от структуры отчетности.
Модуль unittest предоставляет классы, которые позволяют легко поддерживать эти качества для набора тестов.
Для этого unittest поддерживает следующие важные концепции:
test fixture- Это подготовка, необходимая для выполнения одного или нескольких тестов и любых связанных действий по очистке. Это может включать, например, создание временных или прокси-баз данных, каталогов или запуск серверного процесса.
test case- Это самая маленькая единица тестирования. Это проверяет конкретный ответ на конкретный набор входных данных. unittest предоставляет базовый класс,TestCase, который можно использовать для создания новых тестовых случаев.
test suite- Это набор тестовых примеров, тестовых наборов или и того, и другого. Это используется для агрегирования тестов, которые должны выполняться вместе. Наборы тестов реализованы классом TestSuite.
test runner- Это компонент, который управляет выполнением тестов и предоставляет результат пользователю. Бегун может использовать графический интерфейс, текстовый интерфейс или возвращать специальное значение, чтобы указать результаты выполнения тестов.
Создание модульного теста
Для написания простого модульного теста необходимы следующие шаги:
Step 1 - Импортируйте модуль unittest в свою программу.
Step 2- Определите функцию для тестирования. В следующем примере проверяется функция add ().
Step 3 - Создайте тестовый набор, создав подкласс unittest.TestCase.
Step 4- Определите тест как метод внутри класса. Название метода должно начинаться с "test".
Step 5- Каждый тест вызывает функцию утверждения класса TestCase. Есть много типов утверждений. В следующем примере вызывается функция assertEquals ().
Step 6 - функция assertEquals () сравнивает результат функции add () с аргументом arg2 и выдает ошибку assertionError, если сравнение не удалось.
Step 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()
Step 8 - Запустите указанный выше сценарий из командной строки.
C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Step 9 - Следующие три могут быть возможными результатами теста -
Старший Нет | Сообщение и описание |
---|---|
1 | OK Тест пройден. На консоли отображается «A». |
2 | FAIL Тест не проходит и вызывает исключение AssertionError. На консоли отображается "F". |
3 | ERROR Тест вызывает исключение, отличное от 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
Старший Нет | Вариант и описание |
---|---|
1 | -h, --help Показать это сообщение |
2 | v, --verbose Подробный вывод |
3 | -q, --quiet Минимальная мощность |
4 | -f, --failfast Остановить при первой неудаче |
5 | -c, --catch Catch control-C и отобразить результаты |
6 | -b, --buffer Буфер stdout и stderr во время тестовых запусков |