Tests (Fast API)

Les tests permettent de vérifier que les endpoints, la logique métier et les interactions avec les dépendances fonctionnent correctement.
Dans FastAPI, on peut tester :


Comment ça fonctionne dans FastAPI

1. Configuration pour les tests

2. Types de tests

3. Gestion de la base de données et dépendances


Bonnes pratiques


Pourquoi c’est important


En résumé

Fonctions :

  • Tests avec Fast API

    Exemple de code :

    from fastapi import FastAPI
    from fastapi.testclient import TestClient
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        return {"message": "Bienvenue sur FastAPI !"}
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int):
        return {"item_id": item_id}
    
    # Création du client de test
    client = TestClient(app)
    
    # Test de la route racine
    def test_read_root():
        response = client.get("/")
        assert response.status_code == 200
        assert response.json() == {"message": "Bienvenue sur FastAPI !"}
    
    # Test de la route avec paramètre
    def test_read_item():
        response = client.get("/items/5")
        assert response.status_code == 200
        assert response.json() == {"item_id": 5}

    Explication du code :

    from fastapi import FastAPI importe la classe FastAPI pour créer l’application web.

    from fastapi.testclient import TestClient importe TestClient, un outil permettant de simuler des requêtes HTTP pour tester l’application sans démarrer le serveur.

    Créer l’application FastAPI

    app = FastAPI() crée une instance de l’application FastAPI.

    Définir les routes à tester

    @app.get("/") définit la route racine accessible à /.
    return {"message": "Bienvenue sur FastAPI !"} renvoie un message JSON.

    @app.get("/items/{item_id}") définit une route dynamique avec paramètre item_id.
    return {"item_id": item_id} renvoie l’ID de l’item dans la réponse JSON.

    Créer un client de test

    client = TestClient(app) crée un client capable d’envoyer des requêtes HTTP simulées à l’application FastAPI.

    Test de la route racine

    def test_read_root(): définit une fonction de test pour la route /.
    response = client.get("/") envoie une requête GET simulée à la route racine.
    assert response.status_code == 200 vérifie que le code HTTP renvoyé est bien 200.
    assert response.json() == {"message": "Bienvenue sur FastAPI !"} vérifie que le contenu JSON est correct.

    Test de la route avec paramètre

    def test_read_item(): définit une fonction de test pour la route /items/{item_id}.
    response = client.get("/items/5") envoie une requête GET simulée avec item_id=5.
    assert response.status_code == 200 vérifie que le code HTTP est 200.
    assert response.json() == {"item_id": 5} vérifie que le JSON renvoyé contient bien l’ID attendu.