Одним из основных инструментов для тестирования в Python - unittest

Это стандартный модуль для реализации юнит-тестов на Python. Unittest это порт JUnit с Java, иными словами ООП стиль, что весьма удобно для тестирования и процедур, и классов.

Возможностей в данном модуле довольно много: проверки (assert*), декораторы, позволяющие пропустить отдельный тест (@skip, @skipIf) или обозначить сломанные тесты (@expectedFailure)

При написании тестов надо исходит из следующих принципов:

Работа теста не должна зависеть от результатов работы других тестов.

  • Тест должен использовать данные, специально для него подготовленные, и никакие другие.
  • Тест не должен требовать ввода от пользователя
  • Тесты не должны перекрывать друг друга (не надо писать одинаковые тесты 20 раз). Можно писать частично перекрывающие тесты.
  • Нашли баг -> напиши тест
  • Тесты надо поддерживать в рабочем состоянии
  • Модульные тесты не должны проверять производительность сущности (класса, функции)
  • Тесты должны проверять не только то, что сущность работает корректно на корректных данных, но и то что ведет себя адекватно при некорректных данных.


Комментарии