Как происходит модульное тестирование в Python

Без тестирования не создать качественное веб-приложение. Рассказываем, как протестировать код на Python.

Что такое модульное тестирование

Модульное тестирование позволяет проверить, правильно ли работают отдельные части программы и соответствуют ли они заявленным требованиям. Разработчики используют модульные, или unit-тесты
по-разному, в зависимости от ситуации и задач:

  • при подходе TDD (Test-Driven Development, разработка через тестирование) пишут тесты до начала создания приложения, а потом ориентируются на них в процессе программирования;
  • при рефакторинге всей кодовой базы или отдельных ее частей тесты пишут перед началом изменения программы, чтобы не «поломать» ее функциональность;
  • при найденных в программе багах unit-тесты пишут для удобства их отслеживания и исправления.

Наталья Березовская

Автор в сфере IT, digital, экономики и финансов. Ведет некоммерческий проект для начинающих писателей «ЛитЦех».


Модуль применительно к unit-тестированию — это наименьший компонент, который можно скомпилировать.

Для модульного тестирования в языке Python есть встроенный модуль PyUnit (unittest). Вот некоторые из его преимуществ:

  • возможность автоматизированного тестирования;
  • возможность собирать тесты в группы;
  • уменьшение дублирования кода при схожих объектах тестирования благодаря ООП-стилю;
  • возможность собирать результаты выполнения тестов для отчета.

Инструментарий unittest состоит из четырех основных частей:

  • test case — то, из чего собираются тесты, наименьшая единица тестирования;
  • test fixture — среда выполнения тестов, используется для упрощения подготовки нужного состояния test case, тем самым экономя время;
  • test suite — набор готовых тестовых случаев, позволяет упорядочить и управлять комплектами тестов;
  • test runner — компонент, который запускает тесты и выводит пользователю результат.

Помимо встроенного unittest, существует много фреймворков для тестирования кода на Python: Pytest, Nose, Allure, Selene, Selenium и другие.

Пример: тестирование приложения с помощью unittest

Допустим, у нас есть файл calc.py с набором функций. Чтобы протестировать его, нужно сначала создать файл utest_calc.py. Затем добавить в него следующий код:

import unittest
import calc

class CalcTest(unittest.TestCase):
     def test_add(self):
         self.assertEqual(calc.add(1, 2), 3)

     def test_sub(self):
         self.assertEqual(calc.sub(4, 2), 2)

     def test_mul(self):
         self.assertEqual(calc.mul(2, 5), 10)

     def test_div(self):
         self.assertEqual(calc.div(8, 4), 2)

if __name__ == '__main__':
     unittest.main()

Пора запустить его:

Теперь вы увидите краткую информацию о том, что все тесты успешно пройдены:

....
----------------------------------------------------------------------
Ran 4 tests in 0.000s
OK

Заключение

Мы объяснили теорию и привели пример, как происходит модульное тестирование в Python. Если вам интересно программирование на этом языке, рекомендуем курс «Python-разработчик». Вы освоите азы создания веб-приложений, синтаксис языка и базовые принципы программирования, научитесь писать чистый и понятный код. После обучения сможете продемонстрировать работодателям портфолио и получить возможность стажировки и дальнейшего трудоустройства.

Курс

Python-разработчик


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

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox