Как измерять покрытие тестами (pytest-cov) и что это реально показывает?
1️⃣ Как кратко ответить
Покрытие тестами измеряется с помощью инструмента pytest-cov, который интегрируется с pytest для оценки того, какая часть кода была выполнена во время тестирования. Это показывает процент строк кода, которые были выполнены, помогая выявить не протестированные участки и улучшить качество тестирования.
2️⃣ Подробное объяснение темы
Покрытие тестами — это метрика, которая показывает, какая часть вашего кода была выполнена во время тестирования. Это важно для понимания того, насколько полно ваши тесты проверяют функциональность приложения. Инструмент pytest-cov позволяет измерять это покрытие в Python-проектах, используя pytest.
Зачем это нужно?
Покрытие тестами помогает:
- Определить не протестированные участки кода.
- Улучшить качество тестов, добавляя недостающие тесты.
- Убедиться, что изменения в коде не нарушают существующую функциональность.
- Повысить уверенность в стабильности и надежности кода.
Как это работает?
Pytest-cov — это плагин для pytest, который использует библиотеку coverage.py для измерения покрытия. Он отслеживает, какие строки кода были выполнены во время тестов, и генерирует отчет о покрытии.
Установка и использование
-
Установка pytest-cov:
Установите плагин с помощью pip:
pip install pytest-cov -
Запуск тестов с измерением покрытия:
Используйте команду pytest с параметром
--cov, указывая модуль или пакет, который вы хотите проверить:pytest --cov=my_package tests/--cov=my_package: указывает, что нужно измерять покрытие для пакетаmy_package.tests/: директория, содержащая тесты.
-
Генерация отчета о покрытии:
Pytest-cov может генерировать различные типы отчетов, например, в виде HTML:
pytest --cov=my_package --cov-report=html tests/--cov-report=html: генерирует отчет в формате HTML, который можно открыть в браузере для визуального анализа.
Пример использования
Предположим, у вас есть простой модуль calculator.py:
def add(a, b):
return a + b
def subtract(a, b):
return a - b
И тесты для него в test_calculator.py:
from calculator import add, subtract
def test_add():
assert add(2, 3) == 5
def test_subtract():
assert subtract(5, 3) == 2
Запустив pytest с pytest-cov, вы получите отчет о том, что 100% строк кода были выполнены, так как все функции были вызваны в тестах.
Что показывает покрытие?
Покрытие тестами показывает процент строк кода, которые были выполнены во время тестов. Однако, важно понимать, что 100% покрытие не гарантирует отсутствие ошибок. Оно лишь указывает на то, что все части кода были выполнены, но не обязательно протестированы на все возможные сценарии.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться