Назад к вопросам
Junior
92
questionbank
Какие модули для тестирования на Python вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
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:
# my_module.py
def add(a, b):
return a + b
# test_my_module.py
def test_add():
"""Тест функции add"""
assert add(2, 3) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
Запуск тестов:
pytest