Testing django template tags

How to test django template tags

Posted on Sun 23 April 2017

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 templatetags?

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 templatetag. After that I create Template. I used the same syntax to include templatetags inside your html files - they are templates for Django.

Below I render a template with context and check if my templatetag renders correctly.

And that's all! I have my templatetag tested. Feel free to comment!

Cover image from Unsplash under CC0.

Comments !