API du client de test Flask

FlaskClient est un navigateur simulé qui peut envoyer des requêtes et vérifier les réponses sans démarrer de serveur.

Viaapp.test_client()Créer une instance.


Créer un client de test

Méthode Description
app.test_client(use_cookies=True) Méthode de création standard. use_cookies=False désactive la gestion des cookies
with app.test_client() as client: Gestionnaire de contexte. Nettoie automatiquement le contexte de la requête à la sortie.

Méthode de requête

Toutes les méthodes renvoientTestResponseobjet (hérite de Response).

Méthodes Description
get(path, **kwargs) Envoyer une requête GET
post(path, **kwargs) Envoyer une requête POST
put(path, **kwargs) Envoyer une requête PUT
delete(path, **kwargs) Envoyer une requête DELETE
patch(path, **kwargs) Envoyer une requête PATCH
open(path, method, **kwargs) Méthode de requête générique ; la méthode doit être explicitement spécifiée.

Paramètres de requête (kwargs)

Paramètre Description
data Corps de la requête (chaîne ou bytes). Utilisé pour la soumission de formulaire.
json Données JSON, automatiquement sérialisées avec Content-Type: application/json défini
query_string Chaîne ou dictionnaire de paramètres de requête d'URL
headers Dictionnaire des en-têtes de requête
content_type Content-Type personnalisé
follow_redirects bool, indique s'il faut suivre automatiquement les redirections. La valeur par défaut est False.
buffered bool, indique s'il faut mettre la réponse en mémoire tampon. La valeur par défaut est False.

Objet Response (TestResponse)

Attributs/Méthodes Description
status_code Code d'état HTTP (int)
status Texte d'état HTTP, tel que "200 OK"
data Corps de la réponse (bytes)
text Obtenir le corps de la réponse sous forme de texte (str).
get_json() Analyser le corps de la réponse en JSON. Renvoie un dict ou une list.
headers En-têtes de la réponse (objet Headers)
location URL cible de redirection (uniquement pour les réponses 3xx).
json_module Module utilisé pour la sérialisation JSON (par défaut, app.json).

Test de session

Méthodes Description
session_transaction(**kwargs) Gestionnaire de contexte pour lire et écrire directement dans la session. Renvoie un objet SessionMixin.

Exemples de code

Exemple

from app import create_app

app = create_app()
app.config["TESTING"] = True

def test_api():
    with app.test_client() as client:
        # Requête GET
        resp = client.get("/api/posts")
        assert resp.status_code == 200
        data = resp.get_json()
        assert isinstance(data, list)

        # Requête POST JSON
        resp = client.post("/api/posts", json={
            "title": "Tutoriel EXAMPLE",
            "body": "Contenu de prise en main"
        })
        assert resp.status_code == 201
        assert resp.get_json()["title"] == "Tutoriel EXAMPLE"

        # Requête avec paramètres de requête
        resp = client.get("/search?q=flask")
        assert b"flask" in resp.data

        # Simuler l'état connecté
        with client.session_transaction() as sess:
            sess["username"] = "exemple"
        resp = client.get("/dashboard")
        assert b"example" in resp.data

        # Suivre les redirections
        resp = client.post("/login", data={
            "username": "admin"
        }, follow_redirects=True)
        assert resp.status_code == 200
autres extensions