Какие модули есть в python для тестирования? Какие отличия? Плюсы и минусы? Unittest, pytest?

Pytest habt

Виды тестов:

Зачем писать тесты: тесты писать нужно всегда. Как минимум нужно писать unit тесты (так как они самые дешевые). Ими должно быть покрыто максимальное количество кода.

Какие модули есть в python?

  1. Unittest: встроенный в python модуль (импортирован с джавовского JUnit).

    ✅ максимально дружелюбный интерфейс к JUnit

    ✅ не будет лишних зависимостей в проекте

    ✅ используется некоторыми большими фреймворками by default (например django)

    ❌ не pep8 friendly (использует camelCase)

    ❌ атомарный тест — класс

    ❌ скудный функционал по сравнению с pytest

  2. Pytest: инструмент от сторонних разработчиков

    ✅ широкий функционал (очень гибкий)

    ✅ атомарный тест — функция

    ✅ pep8 friendly

    ✅ куча батареек (плагинов)

    ✅ крутая работа с fixtures

    ❌ будет зависимость

Что такое фикстуры?

Статья на хабре

Какие бывают уровни фикстур (scope)?

Уровни фикстур (scope) - это различные степени видимости фикстур в тестовом коде. Существует три уровня фикстур: уровень функции, уровень класса и уровень модуля.

  1. Уровень функции: фикстуры, объявленные на уровне функции, видны только в тестовой функции, в которой они были объявлены. Они существуют только в течение одного вызова тестовой функции и недоступны в других тестовых функциях.
  2. Уровень класса: фикстуры, объявленные на уровне класса, видны во всех тестовых функциях внутри этого класса. Они существуют в течение всего времени жизни экземпляра тестового класса и доступны во всех тестовых функциях этого класса.
  3. Уровень модуля: фикстуры, объявленные на уровне модуля, видны во всех тестовых функциях внутри этого модуля. Они существуют в течение всего времени жизни модуля и доступны во всех тестовых функциях этого модуля.

Обычно рекомендуется использовать уровень функций для фикстур, которые требуются только для одной тестовой функции, и уровня класса или модуля для фикстур, которые используются в нескольких тестовых функциях. Это помогает улучшить читаемость кода и упростить его отладку. Кроме того, существует также уровень сессии, который доступен в некоторых фреймворках для тестирования. Фикстуры на уровне сессии измеряются во всех тестах, которые измеряются в течение одной сессии сессии, и включаются в течение всего времени жизни сессии. Они используются для настройки и инициализации ресурсов, которые необходимы для всех тестов в рамках сессии.

Что такое mock? Зачем нужен?