Hallo zusammen, liebe Entwickler! Heute tauchen wir in die Welt des Unit-Tests mit FastAPI ein. Egal, ob Sie ein erfahrener Profi oder ein Neuling in FastAPI sind, dieser Leitfaden hilft Ihnen dabei, sicherzustellen, dass Ihre API so robust wie möglich ist. Wir behandeln alles, von den Grundlagen des Unit-Tests bis hin zu spezifischen Techniken zum Testen von FastAPI-Anwendungen. Außerdem stellen wir Ihnen ein praktisches Tool namens Apidog vor, mit dem Sie Ihren Testprozess optimieren können.
Warum Unit-Tests wichtig sind
Bevor wir uns mit den Einzelheiten des Unit-Tests von FastAPI befassen, wollen wir darüber sprechen, warum Unit-Tests unerlässlich sind. Vereinfacht ausgedrückt ermöglicht Ihnen der Unit-Test, zu überprüfen, ob jeder Teil Ihrer Anwendung wie vorgesehen funktioniert. Durch das Testen einzelner Komponenten können Sie Fehler frühzeitig erkennen und sicherstellen, dass sich Ihre Anwendung korrekt verhält.
Hier sind einige überzeugende Gründe, Unit-Tests zu nutzen:
- Fehler frühzeitig erkennen: Durch das Testen kleiner Codeeinheiten können Sie Probleme identifizieren und beheben, bevor sie zu erheblichen Problemen werden.
- Codequalität sicherstellen: Unit-Tests fungieren als Sicherheitsnetz und helfen Ihnen, qualitativ hochwertigen Code zu erhalten, während sich Ihr Projekt weiterentwickelt.
- Refactoring erleichtern: Mit einem soliden Satz von Tests können Sie Ihren Code getrost refaktorieren, da Sie wissen, dass alle Probleme sofort erkannt werden.
- Dokumentation verbessern: Tests dienen als zusätzliche Dokumentation und zeigen, wie die verschiedenen Teile Ihrer Anwendung funktionieren sollen.
Nachdem wir nun die Bedeutung von Unit-Tests verstanden haben, wollen wir uns mit den Einzelheiten des Unit-Tests mit FastAPI befassen.

Einrichten Ihres FastAPI-Projekts
Zunächst einmal müssen Sie ein FastAPI-Projekt eingerichtet haben. Wenn Sie dies noch nicht getan haben, können Sie ein neues FastAPI-Projekt erstellen, indem Sie die folgenden Schritte ausführen:
Installieren Sie FastAPI und Uvicorn: FastAPI ist das Web-Framework und Uvicorn ist der ASGI-Server.
pip install fastapi uvicorn
Erstellen Sie Ihre FastAPI-Anwendung: Erstellen Sie eine Datei namens main.py
und fügen Sie den folgenden Code hinzu:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
Führen Sie Ihre Anwendung aus: Starten Sie den Server mit Uvicorn.
uvicorn main:app --reload
Ihre FastAPI-Anwendung ist jetzt betriebsbereit!
Erste Schritte mit Unit-Tests
Installieren von Testabhängigkeiten
Um mit Unit-Tests zu beginnen, benötigen Sie ein Test-Framework. Wir empfehlen die Verwendung von pytest, da es einfach zu bedienen und weit verbreitet ist.
Installieren Sie pytest mit pip:
pip install pytest
Installieren Sie außerdem httpx
, um während der Tests HTTP-Anfragen an Ihre FastAPI-Anwendung zu senden:
pip install httpx
Schreiben Ihres ersten Tests
Lassen Sie uns einen einfachen Test schreiben, um zu überprüfen, ob unser Root-Endpunkt die erwartete Antwort zurückgibt. Erstellen Sie eine Datei namens test_main.py
und fügen Sie den folgenden Code hinzu:
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_root():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"Hello": "World"}
In diesem Test verwenden wir FastAPIs TestClient
, um eine GET-Anfrage an den Root-Endpunkt zu senden und zu bestätigen, dass die Antwort korrekt ist. Führen Sie den Test mit pytest aus:
pytest
Strukturieren Ihrer Tests
Um Ihre Tests organisiert zu halten, sollten Sie die folgende Struktur für Ihre Testdateien in Betracht ziehen:
project/
├── app/
│ ├── main.py
│ └── ... (other application code)
├── tests/
│ ├── __init__.py
│ └── test_main.py
Indem Sie Ihre Tests in einem dedizierten tests
-Verzeichnis ablegen, können Sie eine saubere und organisierte Codebasis beibehalten.
Erweiterte Unit-Test-Techniken
Testen von Endpunkten mit Parametern
FastAPI macht es einfach, Parameter in Ihren Endpunkten zu verarbeiten. Lassen Sie uns einen Endpunkt hinzufügen, der einen Parameter entgegennimmt, und einen Test dafür schreiben.
Aktualisieren Sie Ihre main.py
mit einem neuen Endpunkt:
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
Fügen Sie als Nächstes einen Test für diesen Endpunkt in test_main.py
hinzu:
def test_read_item():
item_id = 42
response = client.get(f"/items/{item_id}")
assert response.status_code == 200
assert response.json() == {"item_id": item_id}
Dieser Test prüft, ob der Endpunkt die im URL übergebene Artikel-ID korrekt zurückgibt.
Testen der Abhängigkeitsinjektion
FastAPIs Abhängigkeitsinjektionssystem ist leistungsstark und flexibel. Sehen wir uns an, wie Sie Endpunkte testen können, die Abhängigkeiten verwenden.
Fügen Sie eine Abhängigkeit zu main.py
hinzu:
from fastapi import Depends
def get_query(q: str = None):
return q
@app.get("/search/")
def search(query: str = Depends(get_query)):
return {"query": query}
Schreiben Sie einen Test für diesen Endpunkt in test_main.py
:
def test_search():
query = "fastapi"
response = client.get(f"/search/?q={query}")
assert response.status_code == 200
assert response.json() == {"query": query}
Hier testen wir, ob die Abhängigkeitsinjektion den Abfrageparameter korrekt verarbeitet.
Einführung von Apidog für erweitertes Testen
Was ist Apidog?
Apidog ist ein fantastisches Tool, das API-Tests und -Dokumentation vereinfacht. Es lässt sich nahtlos in FastAPI integrieren, sodass Sie Ihren Testprozess automatisieren und optimieren können.

Verwenden von Apidog in Ihren Tests
Apidog bietet Dekoratoren, um Ihre Endpunkte einfach zu dokumentieren und zu testen. So können Sie Apidog mit Ihrer FastAPI-Anwendung verwenden.
Richten Sie Ihre Testumgebung ein: Zuerst richten Sie Ihre Testumgebung ein. Dazu gehören die Systeme, die Sie testen möchten, und Apidog. Öffnen Sie Apidog und wechseln Sie zur Registerkarte „Test“

Definieren Sie Ihre Testfälle: Definieren Sie als Nächstes Ihre Testfälle. Denken Sie über die verschiedenen Szenarien nach, die Sie testen möchten, und notieren Sie sie.

Führen Sie Ihre Tests aus: Jetzt ist es an der Zeit, Apidog seine Magie wirken zu lassen! Führen Sie Ihre Tests aus und warten Sie auf die Ergebnisse.

Analysieren Sie Ihre Ergebnisse: Sobald Ihre Tests abgeschlossen sind, analysieren Sie Ihre Ergebnisse. Suchen Sie nach Fehlern oder unerwartetem Verhalten.

Wenn Sie Probleme finden, beheben Sie diese und führen Sie Ihre Tests erneut aus. Wiederholen Sie diesen Vorgang, bis Sie mit den Ergebnissen zufrieden sind.
Mit Apidog können Sie sicherstellen, dass Ihre Tests nicht nur korrekt, sondern auch gut dokumentiert sind.
Best Practices für Unit-Tests von FastAPI
Tests isoliert halten
Stellen Sie sicher, dass jeder Test unabhängig ist und sich nicht auf den Zustand anderer Tests verlässt. Diese Isolierung erleichtert das Debuggen und die Wartung von Tests.
Verwenden Sie Fixtures
Fixtures in pytest können Ihnen helfen, Testumgebungen einzurichten und abzubauen. Hier ist ein Beispiel für eine Fixture für Ihre FastAPI-App:
import pytest
from fastapi.testclient import TestClient
from main import app
@pytest.fixture
def client():
return TestClient(app)
def test_with_fixture(client):
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"Hello": "World"}
Externe Abhängigkeiten mocken
Wenn Ihre Endpunkte von externen Diensten oder Datenbanken abhängen, verwenden Sie Mocking, um diese Abhängigkeiten während des Testens zu simulieren. Dieser Ansatz hilft Ihnen, sich auf das Testen Ihrer Anwendungslogik zu konzentrieren, ohne von externen Faktoren beeinflusst zu werden.
Fazit
Unit-Tests von FastAPI-Anwendungen müssen nicht entmutigend sein. Wenn Sie die in diesem Leitfaden beschriebenen Schritte befolgen, können Sie sicherstellen, dass Ihre API zuverlässig, wartbar und gut dokumentiert ist. Denken Sie daran, Tools wie Apidog zu verwenden, um Ihren Testprozess zu optimieren und Ihre Tests organisiert und isoliert zu halten.
Nun sind Sie an der Reihe, diese Tipps in die Praxis umzusetzen und Ihre FastAPI-Anwendung ausfallsicher zu machen. Viel Spaß beim Testen!