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})

Sources