Generated with Avocode. Generated with Avocode. Generated with Avocode. Group 15 close hat Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. path40

Как происходит модульное тестирование в 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
Посмотреть