python / intermediate
Snippet
Wiederverwendbare TestCase-Basisklasse für benutzerdefinierte API-Antwort-Validierung
Das Erstellen abstrakter oder benutzerdefinierter TestCase-Basisklassen vereinfacht Unit-Tests in Django. Das Erweitern von TestCase um eigene Assertions stellt DRY-Prinzipien über große Test-Suiten hinweg sicher, welche Endpunkt-Schemas und Statuscodes überprüfen.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
from django.test import TestCaseclass BaseAPITestCase(TestCase):def assertSuccessJSON(self, response, expected_keys, status_code=200):self.assertEqual(response.status_code, status_code)self.assertEqual(response.headers.get("Content-Type"), "application/json")data = response.json()for key in expected_keys:self.assertIn(key, data, f"Key '{key}' missing from JSON payload response.")return data
django
Erklärung
1
class BaseAPITestCase(TestCase):
Erbt von Djangos Standard-TestCase, um wiederverwendbare Prüffunktionalitäten für API-Tests bereitzustellen.
2
self.assertEqual(response.status_code, status_code)
Validiert, dass der Server den exakt erwarteten HTTP-Statuscode zurückgegeben hat.
3
data = response.json()
Parst den HTTP-Antwort-Body in ein Python-Objekt für Dictionary-Assertions.
4
self.assertIn(key, data, f"Key '{key}' missing from JSON payload response.")
Iteriert durch erwartete Schlüssel und bestätigt deren Vorhandensein in der Rückgabe.