python / intermediate
Snippet
Isolierte Unit-Tests für benutzerdefinierte Django-Template-Tags
Benutzerdefinierte Django-Template-Tags können ohne Datenbank mittels SimpleTestCase getestet werden, indem String-Templates erstellt, mit Template() kompiliert und mit einem Context-Objekt gerendert werden.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.test import SimpleTestCasefrom django.template import Context, Templateclass FormatBadgeTagTest(SimpleTestCase):def test_custom_badge_rendering(self):template_str = "{% load custom_tags %}{% format_badge status='active' %}"rendered = Template(template_str).render(Context({}))self.assertIn('<span class="badge-active">active</span>', rendered)def test_custom_badge_invalid_status(self):template_str = "{% load custom_tags %}{% format_badge status='unknown' %}"rendered = Template(template_str).render(Context({}))self.assertEqual(rendered, '<span class="badge-default">unknown</span>')
django
Erklärung
1
from django.test import SimpleTestCase
Importiert SimpleTestCase für schnelle Tests, die keine Datenbanktransaktions-Einrichtung erfordern.
2
template_str = "{% load custom_tags %}{% format_badge status='active' %}"
Definiert ein Inline-Template-String, der die benutzerdefinierte Tag-Bibliothek lädt und den zu testenden Tag ausführt.
3
rendered = Template(template_str).render(Context({}))
Kompiliert den Template-String und wertet ihn mit Kontextdaten aus, um Ausgabe-HTML zu generieren.
4
self.assertIn('<span class="badge-active">active</span>', rendered)
Überprüft, ob die erwartete HTML-Ausgabestruktur im gerenderten Ergebnisse-String vorhanden ist.