unittest (или PyUnit) - стандартный модуль для создания и запуска тестов. Поддерживает концепции тестовых случаев (TestCase), тестовых наборов (TestSuite) и тестовых раннеров (TestRunner).pytest - популярный сторонний фреймворк для тестирования. Отличается простотой написания тестов (без необходимости наследования от TestCase), поддержкой фикстур, параметризации и гибкой системой плагинов.nose2 - еще один сторонний фреймворк, улучшающий и расширяющий возможности unittest.doctest - позволяет выполнять примеры кода, встроенные в docstrings, как тесты.mock (встроен в unittest.mock в Python 3.3+) - используется для замены частей вашей системы "фиктивными" (mock)объектами, что позволяет тестировать код независимо от его зависимостей.coverage.py - измеряет покрытие тестами вашего кода.hypothesis - фреймворк для property-based тестирования, генерирующий разнообразные входные данные для проверки инвариантов вашего кода.Сравнение unittest и pytest:
| Особенность | unittest | pytest |
|---|---|---|
| Описание тестов | Классы, наследующие от TestCase | Функции или методы классов |
| Фикстуры | Методы setUp, tearDown | Декоратор @pytest.fixture |
| Параметризация | Требует дополнительных ухищрений | Встроена (@pytest.mark.parametrize) |
| Отчеты | Базовые | Более подробные |
| Плагины | Ограниченно | Широкая экосистема плагинов |
Пример простого теста с использованием pytest:
python
Запуск тестов:
bash