Der ultimative Leitfaden zum Unit-Testing von FastAPI: Machen Sie Ihre API kugelsicher

Lerne, FastAPI-Apps effektiv zu testen! Von Grundlagen bis zu fortgeschrittenen Techniken, inkl. Apidog. Für robuste APIs.

Leo Schulz

Leo Schulz

5 June 2025

Der ultimative Leitfaden zum Unit-Testing von FastAPI: Machen Sie Ihre API kugelsicher

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.

button

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:

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.

Apidog interface

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.

button

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“

Test tab in Apidog

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.

Define Your Test Cases Scenario in Apidog

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.

Run test in Apidog

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

Analyze the results.

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!

Explore more

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Künstliche Intelligenz wächst rasant. FractalAIResearch/Fathom-R1-14B (14,8 Mrd. Parameter) glänzt in Mathe & Logik.

5 June 2025

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Die Softwareentwicklung erlebt Innovationen durch KI. Cursor, ein KI-Editor, erreicht mit Version 1.0 einen Meilenstein.

5 June 2025

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

Der Aufstieg von Web 3.0: Dezentral, nutzerorientiert, transparent. APIs ermöglichen innovative dApps und Blockchain-Integration.

4 June 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen