А сегодня немного о том, как тестировать Python-модули.

  • unittest — модуль из стандартной библиотеки Python, интерфейс которого позаимствован из junit. В python3 под именем unittest скрывается unittest2, который для python2 можно доустановить из PyPI.
  • doctest — запускает тесты, которые представляют собой скопированные в docstring из интерактивного интерпретатора python куски кода. Лучше просто посмотрите примеры из официальной документации.
  • PyTest — позволяет писать тесты ещё проще. Достаточно сделать функции или методы, во внутрь который воткнуть нативный пайтоновский assert, а уж pytest сам аккуратно преобразует это всё в тесты с красивым и подробным выводом результатов. Must have для случаев, когда тестов надо писать очень много.
  • coverage — оценивает покрытие кода тестами. Помогает определить, для чего нужно написать тесты в первую очередь.
  • nose — позволяет быстро и удобно запустить всё вышеописанное. Сам найдёт все тесты, сам их прогонит, сформирует результат.
  • faker — генератор фейковых данных для тестов, типа ФИО, адреса, городов, улиц, номеров кредиток и ещё кучи всего. В том числе отлично генерирует данные на русском языке.
  • mimesis — как faker, только не он. Если не нашли чего-то в faker’е, загляните в mimesis.
  • hypothesis-python — полезная библиотека для случаев, когда нужно прогонять код на большом количестве данных и для каждого результата проверять какие-то условия. Например, нужно протестировать random.randint. Соответственно, генерируем разные начальные и конечные значения и проверяем, что результат функции входит в этот диапазон.