from django.test import TestCase
from django.template import Context, Template
class TagTests(TestCase):
def tag_test(self, template, context, output):
t = Template('{% load multifor %}'+template)
c = Context(context)
self.assertEqual(t.render(c), output)
def test_for_tag_multi(self):
template = "{% for x in x_list; y in y_list %}{{ x }}:{{ y }}/{% endfor %}"
context = {"x_list": ('one', 1, 'carrot'), "y_list": ('two', 2, 'orange')}
output = u"one:two/1:2/carrot:orange/"
self.tag_test(template, context, output)
Это довольно похоже на то, как тесты изложены в Django собственный набор тестов, но не полагаясь на django несколько сложное тестовое оборудование.
Ответ 2
Самый простой способ проверить фильтр шаблонов - проверить его как обычную функцию.
@register.filter decorator не наносит вреда основной функции, вы можете импортировать фильтр и использовать его так, как если бы он не был украшен. Этот подход полезен для тестирования логики фильтра.
Если вы хотите написать больше теста стиля интеграции, тогда вы должны создать экземпляр шаблона django и проверить правильность вывода (как показано в ответе Габриэля).