python / expert
Snippet
Unit-Testing von asynchronen Django-Views mit AsyncRequestFactory
Das Testen asynchroner Komponenten in Django erfordert eine isolierte Testausführung. SimpleTestCase in Kombination mit AsyncRequestFactory ermöglicht es asynchronen Testmethoden, asynchrone View-Funktionen direkt auszuführen und zu überprüfen, ohne dass Datenbank-Overhead entsteht.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.test import SimpleTestCase, AsyncRequestFactoryfrom django.http import JsonResponseasync def mock_async_view(request):return JsonResponse({"status": "operational", "mode": "async"})class AsyncViewTestCase(SimpleTestCase):def setUp(self):self.factory = AsyncRequestFactory()async def test_async_status_endpoint_returns_200(self):request = self.factory.get("/api/status/")response = await mock_async_view(request)self.assertEqual(response.status_code, 200)self.assertIn(b"operational", response.content)
django
Erklärung
1
from django.test import SimpleTestCase, AsyncRequestFactory
Importiert Djangos leichtgewichtigen Testfall ohne Datenbank und die Factory zum Erstellen asynchroner HTTP-Anfragen.
2
self.factory = AsyncRequestFactory()
Instanziiert den Anfragengenerator, der unterdrückte HttpRequest-Objekte für asynchrone View-Aufrufer erstellen kann.
3
async def test_async_status_endpoint_returns_200(self):
Asynchrone Testmethode, die automatisch in der Ereignisschleife des Test-Runners ausgeführt wird.
4
response = await mock_async_view(request)
Wartet auf die Ausführung der Ziel-Async-View-Logik, um Statuscodes und Payload-Zusicherungen zu überprüfen.