МЕНЮ

МЕНЮ


МЕНЮ

МЕНЮ


МЕНЮ

МЕНЮ
Как легко получить JUnit-отчеты в Django Как легко получить JUnit-отчеты в Django Хороший все-таки фреймворк Django, удобный, постоянно улучшающийся и развивающийся, отлично документированный и так далее. Но есть у него как минимум одно место, которое некоторых разработчиков и тестировщиков не очень устраивает - это фреймворк для написания автотестов. Разработчикам автотестов Django предлагает свой wrapper стандартного питоновского фреймворка PyUnit ( unittest ). Причем до версии django 1.6 у этой надстройки был один недостаток - довольно неудобное обнаружение автотестов (test discovey). В версии этот недостаток устранили и мы получили возможность гибкой организации автотестов за счет более продвинутого их обнаружения джанговским запускальщиком тестов (test runner). Но остался нерешенным еще один "недостаток". А именно невозможность "из коробки" генерировать отчеты о прогонах автотестов в JUnit xml-формате . Это довольно странно, особенно ввиду большого числа CI-решений, которым нужен такой формат: jenkins/hudson, bamboo etc... Для предыдущих версий django cторонние django-разработчики успели реализовать несколько приложений для решения задачи получения xml-отчета. Большинство этих приложений не работают с 1.6 версией и должны быть соответствующим образом доработаны. Мы ждать не хотим, писать свое нет времени и ресурсов. Поэтом нам на помощь приходит никто иной как pytest. С его помощью можно генерировать junit-отчеты безо всякого изменения настроек django-проекта и без изменений в имеющихся автотестах. Для этого надо: поставить pytest-django для запуска тестов использовать py.test вместо django-ского manage.py test ... pip install pytest-django cd /path/to/django/project py.test --ds=DJANGO_SETTINGS_MODULE --junitxml=/path/to/junit/xml/report Получив xml-отчет мы можем уже отображать его в любом CI-решении, которому нужен junit-формат. Например, в bamboo - используем встроенный компонент JUnit Parser, указав в его параметрах , где искать xml-отчет о прогоне автотестов. Таким образом, мы можем использовать всю мощь и гибкость py.test и продолжать при этом писать тесты с помощью встроенных в django механизмов. К слову, можно и сами django-тесты писать в py.test - стиле. Но лично мне формат PyUnit нравится больше.