Вы читаете журнал [info]magic_tolik

magic_tolik [userpic]

Django Coverage

Январь, 15, 2010 (17:21)
Метки: ,

Возможно не все знают, я например не знал, что помимо юнит-тестов есть еще такая небольшая библиотека для питона: coverage. Делает простую вещь: показывается какой код выполнялся, а какой нет. Результаты показывает в нескольких форматах. Особенно красиво это выглядит в формате html - создается целая папка где по каждому модулю показывается с цветовой раскраской сколько в процентах покрытие кода, сколько всего строк и сколько покрыто. Можно открыть исходники каждого модуля и увидеть с подсветкой какой код не выполнялся.
Дополнительно для Django написано небольшое приложение django-coverage, которое заменяет стандартный класс тестирования.

Настроить все это для django-проекта просто:
1. Ставим coverage и django-coverage:

sudo port install py26-coverage (специфично для мака, на линуксе ставим из пакетов)
sudo pip-2.6 install django-coverage


2. Создаем папку, куда будут класться html-файлы отчетов покрытия кода:

sudo chown build (обычна папка build уже есть в проекте если вы запускали pip под sudo)
mkdir build/coverage


3. В settings.py проекта добавляем две строчки

TEST_RUNNER = 'django_coverage.coverage_runner.run_tests'
COVERAGE_REPORT_HTML_OUTPUT_DIR = './build/coverage'


4. Запускаем юнит-тесты джанго-проекта: ./manage.py test и смотрим степень покрытия кода в папке build/coverage.

Результаты нескольких дней использования: coverage рулит! Реально нашел около четырех багов за счет увеличения площади покрытия кода тестами!