Покрытие тестовых шаблонов Django

Есть ли способ создать отчет, содержащий покрытие кода в моем наборе тестов django для шаблонов моего сайта? У меня уже есть покрытие для python, но покрытие для шаблонов для выявления мертвого или непроверенного кода шаблона было бы потрясающим.

Чтобы уточнить: я хочу найти в своих шаблонах строки, которые никогда не выполняются и не генерируются во время моего набора тестов.


person jterrace    schedule 08.03.2012    source источник
comment
django-debug-toolbar улавливает информация о шаблоне, возможно, это вас вдохновит.   -  person jpic    schedule 15.03.2012


Ответы (3)


Взгляните на инструмент покрытия шаблонов Django: https://github.com/traff/dtcov Это действительно именно то, что вам нужно.

РЕДАКТИРОВАТЬ: Покрытие шаблонов Django было объединено с покрытием .py как плагин: http://nedbatchelder.com/blog/201501/coveragepy_for_django_templates.html

Рекомендуется использовать вместо оригинального проекта.

person Dmitry Trofimov    schedule 10.06.2012

Шаблоны не хранят никакой информации о номерах строк, в отличие от исходного кода Python. Лучшее, что вы могли сделать, - это обезьяна исправить объект NodeList, чтобы записать, сколько раз каждый узел был оценен, а затем повторно отрендерить шаблоны в специальном режиме, который покажет, какие узлы оцениваются.

РЕДАКТИРОВАТЬ: я был исправлен.

Шаблоны ДОЛЖНЫ хранить информацию о номерах строк, но только для начала токена. I.E. если у вас есть TextNode, охватывающий несколько строк, вам нужно будет справиться с этим самостоятельно. В django.templates.debug есть интересный код, который может быть полезен для создания такого репортера покрытия.

person Thomas    schedule 08.03.2012

Я не думаю, что вы можете получить информацию о покрытии из шаблонов, но вы можете узнать, какие шаблоны отображаются, подключив template_rendered сигнал. Ваш приемник будет хранить имена визуализированных шаблонов.

Затем вы можете легко узнать, какие шаблоны не отображаются с помощью команды find.

person jpic    schedule 15.03.2012