python / intermediate
Snippet
Isolierte Umgebungstests über Django Settings-Overrides
Der Decorator @override_settings ermöglicht das dynamische Anpassen von Projektkonfigurationen für einzelne Testmethoden oder ganze TestCase-Klassen, um Tests deterministisch und isoliert zu halten.
snippet.py
python
1
2
3
4
5
6
7
8
9
from django.test import TestCase, override_settingsfrom django.core.mail import outbox, send_mailclass EmailNotificationTestCase(TestCase):@override_settings(EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend")def test_welcome_email_dispatch(self) -> None:self.assertEqual(len(outbox), 1)self.assertEqual(outbox[0].subject, "Welcome")
django
Erklärung
1
from django.test import TestCase, override_settings
Importiert Djangos Test-Basisklasse und den Decorator zum Überschreiben von Einstellungen.
2
@override_settings(EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend")
Ersetzt temporär das E-Mail-Backend des Projekts für die Dauer des Testdurchlaufs.
3
send_mail("Welcome", "Hello User", "[email protected]", ["[email protected]"])
Führt die E-Mail-Versandfunktion aus, die nun das temporäre In-Memory-Backend verwendet.
4
self.assertEqual(len(outbox), 1)
Prüft, ob genau eine Nachricht im Django-Test-Postausgang gelandet ist.