Назад к вопросам
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