Тестовое покрытие шаблона Django - PullRequest
22 голосов
/ 08 марта 2012

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

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

Ответы [ 3 ]

11 голосов
/ 10 июня 2012

Взгляните на Django Template Coverage: https://github.com/traff/dtcov Он делает именно то, что вам нужно.

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

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

1 голос
/ 08 марта 2012

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

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

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

0 голосов
/ 15 марта 2012

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

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

...