Vue d'ensemble
Starlette 0.21, publié le 26 septembre 2022, migre le TestClient de requests vers httpx et améliore le typage.
Fonctionnalités principales
TestClient avec httpx
Le TestClient utilise désormais httpx, offrant le support HTTP/2 et une API asynchrone native pour les tests.
python
from starlette.testclient import TestClient
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
async def api(request):
return JSONResponse({'status': 'ok'})
app = Starlette(routes=[Route('/api', api)])
# TestClient utilise httpx en interne
client = TestClient(app)
response = client.get('/api')
assert response.json() == {'status': 'ok'}
Typage amélioré
Les annotations de type sont étendues sur les principales classes, facilitant l'utilisation avec mypy et les IDE.
python
from starlette.requests import Request
from starlette.responses import Response, JSONResponse
# Les types sont bien définis pour mypy
async def handler(request: Request) -> Response:
data: dict = await request.json()
return JSONResponse({'received': data})
