Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: jterraceОтветов: 3

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

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

  • django-debug-toolbar улавливает информация о шаблоне, возможно, это вас вдохновит. jpic 15.03.2012

pythondjangounit-testingcode-coverage

Ответы

Ответ 1 · рейтинг 11 · Dmitry Trofimov

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

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

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

Ответ 2 · рейтинг 1 · Thomas

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

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

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

Ответ 3 · jpic

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы