In this blog post I will give you simple example how to test your template tags in django using django testing tools. Let’s get started!
How to test template tags?
Let say that you got this template tag under /templatetags/create_header.py
in django:
from django import template
register = template.Library()
@register.inclusion_tag('example.html', takes_context=True)
def make_header(context):
return {
'header_title': context['title']
}
This make_header
tag will take the title from context and pass it template tag. Right after that example.html
will be rendered.
If you want to test if this template tag works you can use this:
from django.test import SimpleTestCase
from django.template import Context, Template
class CreateHeaderTemplateTagTest(SimpleTestCase):
def test_rendered(self):
context = Context({'title': 'my_title'})
template_to_render = Template(
'{% load create_header %}'
'{% make_header %}'
)
rendered_template = template_to_render.render(context)
self.assertInHTML('<h1>my_title</h1>', rendered_template)
What is happening here? I setup Context
instance with a proper variable that will be taken by template tag. After that I create Template
. I used the same syntax to include template tags inside your html files - they are templates for Django.
Below I render a template with context and check if my template tag renders correctly.