В этой статье мы разберём как работать с unittest в Python, думаю всем будет очень полезно и интересно.
Также посмотрите статью: «Простой калькулятор на Python», так как на базе этого калькулятора мы и будем тестировать.
Подготовка проекта:
Для начала нам нужно подготовить проект, вы можете этот пункт пропустить, так как мне нужно подготовить калькулятор.
В начале создаём два файла, «calc.py», в нём мы будем хранить функции для вычислений калькулятора, и «test.py», в нём будет происходить всё тестирование.
Давайте поострим что будет в «calc.py»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def sum(a, b): return a+b def sub(a, b): return a-b def mul(a, b): return a*b def div(a, b): return a/b |
Как видите у нас тут несколько функций, которые отвечают за складывание, вычитание, умножение и деление соответственно, их и будем тестировать, так же можете добавить их в калькулятор, но это не обязательно для теста.
Как работать с unittest в Python:
Теперь перейдём к самому тестированию, тесты будем писать в «test.py», вот что должно быть в нём:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import unittest import calc class Test(unittest.TestCase): def test_sum(self): self.assertEqual(calc.sum(4, 7), 11) def test_sub(self): self.assertEqual(calc.sub(10, 5), 5) def test_mul(self): self.assertEqual(calc.mul(3, 7), 21) def test_div(self): self.assertEqual(calc.div(10, 2), 5) if __name__ == '__main__': unittest.main() |
Как видите в самом начале файла мы импортируем библиотеку unittest и наш файл «calc.py» где находиться все функции для работы калькулятора.
Потом создаём класс Test, который унаследуем от класса TestCase, это пожалуй самое важное что нужно делать в в классе для тестирования.
Внутри него создаём несколько методов, которые будут запускаться поочерёдно во время тестирования.
Каждый метод использует метод assertEqual()
, который в качестве параметров принимает в себя функцию которую нужно проверить, и значение которая она должна вернуть, если она возвращает другое значение, то при тестирование появится ошибка, таким образом и делаем unit тест в Python.
Последние что мы делаем, это код для запуска программы, внутри условия if __name__ == '__main__'
, мы запускаем unittest.
Для запуска тестирования введите команду в консоль:
1 | python3 test.py -v |
Вот что должно появиться в консоли:
Как видите у нас всё запустилось, и работает, если же была ошибка, то он бы это вывел.
Тестирование классов:
Не много стоит упомянуть про тестирование классов, по сути всё точно так же, как и с обычными функциями, нужно только объявить класс, сделать это можно таким образом:
1 2 | def setUp(self): self.class_test = ClassTest() |
То есть объявлять класс нужно во методе setUp()
, по сути он работает как конструктор, поэтому его стоит знать.
Дальше для получения метода класса нужно сделать так:
1 2 | def test(self): self.assertEqual(self.class_test.test('Привет ', 'тест'), 'Привет тест') |
Ну и конечно это всё делается внутри класса для тестирования.
Другие тесты:
Так же очень важно упомянуть другие методы, которые тестируют код, вот их список:
- assertNotEqual() — Тоже самое что и
assertEqual()
, но проверяет не равенство; - assertTrue() — Смотрит чтобы функция возвращала True;
- assertFalse() — Смотрит чтобы функция возвращала False;
- assertIs(a, b) — a есть b;
- assertIsNot(a, b) — a не есть b;
- assertCountEqual(a, b) — a и b содержат те же элементы в одинаковых количествах, но порядок не важен;
Это конечно ещё не всё, но на мой взгляд это самые важные и вы будите использовать чаше всего.
Вывод:
В этой статье мы кратко разобрали как работать с unittest на языке программирования Python, думаю вам было интересно.
Также если вас заинтересовала библиотека, то посмотрите официальную документацию по ней.