python / intermediate
Snippet
Unit-Testing asynchroner Django-Views mit AsyncRequestFactory
Das Testen von Coroutine-basierten Django-Views erfordert einen asynchronen Request-Kontext. AsyncRequestFactory erstellt nicht-blockierende Mock-HTTP-Request-Objekte, die direkt in asynchronen Testfällen mittels pytest-asyncio abgewartet werden können.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
import pytestfrom django.test import AsyncRequestFactoryfrom myapp.views import async_status_view@pytest.mark.asyncioasync def test_async_status_view_success():factory = AsyncRequestFactory()request = factory.get('/api/status/')response = await async_status_view(request)assert response.status_code == 200assert response.headers['content-type'] == 'application/json'
django
Erklärung
1
factory = AsyncRequestFactory()
Instanziiert die spezialisierte Django-Request-Factory zur Erstellung asynchroner HTTP-Request-Mocks.
2
response = await async_status_view(request)
Wartet die Ausführung der asynchronen View mit dem generierten Mock-Request-Objekt direkt ab.
3
assert response.status_code == 200
Überprüft, dass die asynchrone View erfolgreich ausgeführt wurde und einen HTTP 200 OK-Status zurückgibt.