Die meisten API-Tests laufen linear ab: Login, Checkout, Beleg abrufen, Ergebnisse prüfen. Das funktioniert nur, solange ein Fehler in einem Schritt keine Folgefehler erzeugt. Gibt der Login beispielsweise 401 Unauthorized zurück, ist ein anschließender Checkout nicht aussagekräftig. Er produziert meist nur einen zweiten, irreführenden Fehler. Mit einer bedingten Verzweigung liest Ihr Test die Login-Antwort, entscheidet über den nächsten Schritt und markiert die tatsächliche Fehlerquelle.
In diesem Tutorial erstellen Sie in Apidog ein API-Testszenario mit if/else-Logik: Der Test führt Checkout nur aus, wenn Login erfolgreich war. Die linearen Grundlagen finden Sie im Leitfaden zum Erstellen eines Testszenarios mit Apidog. Für die allgemeinen Konzepte hinter Verzweigungen eignet sich der MDN-Leitfaden zu bedingten Anweisungen.
Was Flusskontrolle ist – und was nicht
Automatisierte Tests liegen in Apidog im Modul Tests. Dort erstellen Sie Testszenarien, vergleichbar mit Collections in Postman. Ein Szenario besteht aus Testschritten:
- API-Anfragen
- Steuerfluss-Elementen wie Verzweigungen, Schleifen und Wartezeiten
Mit Flusskontrolle verarbeitet ein Szenario nicht nur Schritte strikt nacheinander. Eine Bedingte Verzweigung prüft einen Wert und führt abhängig vom Ergebnis unterschiedliche Schritte aus:
if Login-Status == 200:
Checkout ausführen
else:
Fehler melden und Szenario beenden
Die vollständige Referenz finden Sie in der Apidog-Dokumentation zu Flusskontrolle und bedingten Verzweigungen.
Verzweigung vs. Schleife
Eine Verzweigung und eine Schleife lösen unterschiedliche Probleme:
| Element | Zweck |
|---|---|
| Bedingte Verzweigung | Entscheidet einmal zwischen Pfaden (if/else) |
| For Loop / ForEach Loop | Wiederholt Schritte über Werte oder Array-Elemente |
Wenn Sie beispielsweise mehrere Bestell-IDs abarbeiten müssen, verwenden Sie eine Schleife. Dafür gibt es das ForEach-Schleifen-Tutorial.
Die Dokumentation nennt keine separaten Plan-, Cloud- oder Self-Hosting-Beschränkungen für Flusskontrolle, Verzweigungen, Schleifen oder Datenübergabe. Wenn Sie ein Testszenario anlegen können, können Sie darin auch Verzweigungen verwenden.
Ziel: Checkout nur nach erfolgreichem Login ausführen
Sie bauen folgenden Ablauf:
- Benutzer anmeldet sich an.
- Das Szenario prüft den Login-Statuscode.
- Bei
200 OKwird Checkout ausgeführt. - Bei jedem anderen Status wird der Fehlerpfad ausgeführt.
So verhindern Sie, dass ein ungültiger Login einen Folgefehler im Checkout erzeugt.
Schritt 1: Testszenario erstellen
- Öffnen Sie in Apidog das Modul Tests.
- Klicken Sie neben der Suche auf
+. - Wählen Sie ein Verzeichnis für das Szenario.
- Legen Sie bei Bedarf eine Priorität fest.
- Erstellen Sie das Szenario.
Sie starten mit einem leeren Ablauf und können nun Testschritte hinzufügen.
Schritt 2: Login-Anfrage hinzufügen
Fügen Sie die Login-Anfrage als ersten Testschritt ein. Sie können eine vorhandene API-Spezifikation, einen gespeicherten Endpoint-Fall, cURL oder eine benutzerdefinierte Anfrage verwenden.
Für ein Beispiel erstellen Sie eine POST-Anfrage:
POST https://api.your-store.com/v1/login
Content-Type: application/json
{
"email": "dana@example.com",
"password": "correct-horse-battery-staple"
}
Führen Sie den Schritt zunächst separat aus. Ein erfolgreicher Login könnte beispielsweise folgende Antwort liefern:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userId": "usr_10482"
}
Prüfen Sie dabei insbesondere:
- Statuscode ist
200 - Das erwartete Token ist im Response-Body vorhanden
- Das Response-Format passt zu den späteren Referenzen
Schritt 3: Orchestrierungsmodus öffnen
Klicken Sie auf einen beliebigen Schritt, um in den Orchestrierungsmodus zu wechseln.
In dieser Ansicht:
- zeigt das linke Panel den Ablauf des gesamten Szenarios,
- zeigt das rechte Panel die Konfiguration des ausgewählten Schritts,
- können Sie Schritte über das Symbol
≡per Drag-and-drop umsortieren.
Hier fügen Sie auch die Verzweigung zwischen Login und Checkout ein.
Schritt 4: Bedingte Verzweigung hinzufügen
- Klicken Sie auf
Schritt hinzufügen. - Wählen Sie
Bedingte Verzweigung. - Konfigurieren Sie eine
if-Bedingung für die Login-Antwort.
Apidog bietet dafür unter anderem diese Operatoren:
- Ist gleich
- Ist nicht gleich
- Existiert
- Existiert nicht
- Kleiner als
- Kleiner als oder gleich
- Größer als
- Größer als oder gleich
- Stimmt mit Regex überein
- Enthält
- Enthält nicht
- Ist leer
- Ist nicht leer
- In Liste
- Nicht in Liste
Für den Login verwenden Sie folgende Logik:
Status der Login-Antwort Ist gleich 200
Schritt 5: Status der vorherigen Antwort referenzieren
Für Werte aus vorigen Schritten gibt es zwei praktikable Ansätze.
Option A: Daten des vorherigen Schritts abrufen
Diese Methode benötigt keine zusätzliche Variable.
- Klicken Sie in das Wertfeld der Bedingung.
- Öffnen Sie das Zauberstab-Symbol.
- Wählen Sie
Daten des vorherigen Schritts abrufen. - Wählen Sie den Status der Login-Anfrage.
Intern verwendet Apidog dafür Referenzen wie:
{{$.<step id>.response.body.<field path>}}
Um beispielsweise das Login-Token aus Schritt 1 zu referenzieren, verwenden Sie:
{{$.1.response.body.token}}
Beachten Sie dabei zwei Einschränkungen:
-
Daten des vorherigen Schritts abrufenfunktioniert nur im Modul Tests, nicht im Modul APIs. - Die Referenz wird nur beim Ausführen des vollständigen Szenarios aufgelöst. Bei einer isolierten Ausführung eines einzelnen Schritts kann sie leer sein.
Option B: Antwortwert in eine Variable extrahieren
Wenn Sie Werte in mehreren Schritten oder auch im Modul APIs benötigen, extrahieren Sie diese nach der Login-Anfrage in eine benannte Variable.
- Öffnen Sie bei der Login-Anfrage die Post-Processors.
- Fügen Sie
Variable extrahierenhinzu. - Verwenden Sie einen JSONPath-Ausdruck, etwa:
$.token
- Speichern Sie den Wert beispielsweise als
token.
Danach können Sie ihn in späteren Anfragen verwenden:
{{token}}
Weitere Details finden Sie im Leitfaden zum Übergeben von Daten zwischen Testschritten.
Für eine reine Statuscode-Prüfung ist Daten des vorherigen Schritts abrufen meist der kürzeste Weg.
Schritt 6: Else-Pfad konfigurieren
Fahren Sie mit der Maus über den if-Block und klicken Sie auf + Else.
Nun haben Sie zwei getrennte Pfade.
If: Checkout ausführen
Fügen Sie innerhalb des if-Blocks die Checkout-Anfrage ein. Sie wird nur ausgeführt, wenn der Login den Status 200 geliefert hat.
Falls Checkout das Login-Token benötigt, senden Sie es beispielsweise im Authorization-Header:
POST https://api.your-store.com/v1/checkout
Authorization: Bearer {{token}}
Content-Type: application/json
Das entspricht dem üblichen Muster für authentifizierte API-Anfragen, wie es auch die Stripe API-Dokumentation zeigt.
Else: Fehler sichtbar machen
Fügen Sie im else-Block einen Schritt hinzu, der den Fehler eindeutig markiert. Geeignete Optionen sind:
- eine Anfrage an einen Logging- oder Benachrichtigungs-Endpunkt,
- eine benutzerdefinierte Anfrage,
- eine Assertion, die bewusst fehlschlägt.
Der wichtige Punkt: Der Fehlerpfad darf nicht so wirken, als wäre Checkout ausgeführt worden.
Der Ablauf lautet jetzt:
if Login-Status == 200:
Checkout ausführen
else:
Login-Fehler melden
Schritt 7: Speichern und als Gesamtszenario ausführen
Klicken Sie auf Alle speichern. Ein Punkt bei Änderungen zeigt an, dass noch nicht gespeichert wurde.
Führen Sie anschließend das gesamte Szenario aus:
- Mit gültigen Zugangsdaten sollte der
if-Block laufen. - Mit falschen Zugangsdaten sollte der
else-Block laufen. - Der Checkout darf bei einem fehlgeschlagenen Login nicht ausgeführt werden.
Erweiterungen für komplexere Szenarien
Auf ein Feld im Response-Body verzweigen
Sie können nicht nur Statuscodes prüfen. Wenn Ihre API beispielsweise immer 200 liefert, aber den eigentlichen Kontostatus im Body zurückgibt, verwenden Sie ein Body-Feld:
{{$.1.response.body.status}}
Mögliche Bedingungen:
status Ist gleich "active"
oder:
message Enthält "locked"
Auch Bereichs- und Listenprüfungen sind möglich:
balance Größer als 0
role In Liste ["admin", "editor"]
Verzweigungen innerhalb einer ForEach-Schleife verwenden
Sie können Verzweigungen und Schleifen kombinieren. Ein typisches Beispiel:
- Eine ForEach-Schleife iteriert über Produkt-IDs.
- Eine Bedingte Verzweigung prüft, ob das Produkt aktiv oder verfügbar ist.
- Nur passende Produkte werden verarbeitet.
Referenzen innerhalb einer Schleife verwenden diese Form:
{{$.<loop step id>.index}}
{{$.<loop step id>.element.<field path>}}
Der Index beginnt bei 0. Eine ausführliche Einführung finden Sie im ForEach-Schleifen-Tutorial.
Schleife mit Break If frühzeitig beenden
Innerhalb einer Schleife beendet Break If condition die Iteration, sobald eine Bedingung erfüllt ist. Sie können dieses Element verschieben und mehrfach in einer Schleife einsetzen.
Fehler innerhalb von Schleifen behandeln
Schleifen enthalten ein fest positioniertes On Error-Element. Damit legen Sie fest, was bei Fehlern in einer Anfrage innerhalb der Schleife passiert:
| Option | Verhalten |
|---|---|
Ignorieren |
Mit der nächsten Anfrage fortfahren |
Fortsetzen |
Restliche Anfragen des aktuellen Zyklus überspringen |
Ausführung abbrechen |
Schleife beenden und danach fortfahren |
Ausführung beenden |
Gesamtes Szenario stoppen |
Wartezeit einfügen
Wenn ein nachgelagerter Dienst eine Schreiboperation nicht sofort sichtbar macht, fügen Sie ein Warten-Element ein. Die Verzögerung wird in Millisekunden angegeben.
Typischer Ablauf:
POST /orders
Warten: 500 ms
GET /orders/{id}
Referenzen in Skripten verwenden
In Pre-Processor- und Post-Processor-Skripten funktioniert die Syntax {{variable}} nicht direkt. Verwenden Sie stattdessen pm.variables.get():
const token = pm.variables.get("$.2.response.body.token");
Passen Sie Schritt-ID und Feldpfad an Ihr Szenario an. Mehr dazu finden Sie in den Artikeln zur Anfragenverkettung und zur API-Testorchestrierung und Datenübergabe.
Ein Szenario kann nicht das ursprüngliche Testszenario selbst referenzieren. Das verhindert versehentliche Endlosschleifen bei verschachtelten Szenarien.
Testszenario mit der Apidog CLI in CI ausführen
Das Szenario muss nicht ausschließlich in der Apidog-Oberfläche laufen. Mit der CLI können Sie gespeicherte Szenarien headless in einer CI-Pipeline ausführen.
Installieren Sie die CLI und melden Sie sich an:
npm install -g apidog-cli
apidog login --with-token <IHR_ACCESS_TOKEN>
Führen Sie anschließend ein Testszenario mit Szenario-ID, Umgebung und Reporter aus:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <szenario_id> -e <umgebungs_id> -r cli
Die Parameter bedeuten:
| Parameter | Beschreibung |
|---|---|
-t |
ID des Testszenarios |
-e |
ID der Umgebung |
-r |
Reporter |
Für mehrere Reporter trennen Sie die Werte durch Kommas:
apidog run --access-token $APIDOG_ACCESS_TOKEN \
-t <szenario_id> \
-e <umgebungs_id> \
-r html,cli
Mögliche Reporter sind unter anderem:
-
clifür Konsolenausgabe -
htmlfür HTML-Artefakte -
junitfür Pipeline-kompatible Testergebnisse
Die Verzweigung verhält sich in CI genauso wie in der App: Der Runner liest die Login-Antwort, wählt den if- oder else-Pfad und liefert einen passenden Exit-Code.
Weiterführende Anleitungen:
FAQ
Was ist der Unterschied zwischen Bedingter Verzweigung und Schleife?
Eine Bedingte Verzweigung entscheidet einmal, ob ein Block ausgeführt wird. Eine Schleife wiederholt einen Block.
Verwenden Sie eine Verzweigung für Entscheidungen wie:
Nur Checkout ausführen, wenn Login erfolgreich war
Verwenden Sie eine For- oder ForEach-Schleife für wiederholte Verarbeitung:
Jede Bestell-ID aus einem Array abrufen
Weitere Beispiele finden Sie im ForEach-Schleifen-Tutorial.
Warum ist „Daten des vorherigen Schritts abrufen“ leer?
Es gibt zwei häufige Ursachen:
- Die Funktion steht nur im Modul Tests zur Verfügung, nicht im Modul APIs.
- Sie führen einen einzelnen Schritt statt des gesamten Szenarios aus.
Führen Sie das vollständige Szenario aus, damit Apidog die Antwort des vorherigen Schritts auflösen kann.
Kann ich auf ein Body-Feld statt auf den Statuscode verzweigen?
Ja. Referenzieren Sie beispielsweise ein Feld aus dem Login-Body:
{{$.1.response.body.status}}
Danach verwenden Sie einen passenden Operator wie:
Ist gleichEnthältIn Liste
Alternativ extrahieren Sie den Wert als benannte Variable. Details dazu finden Sie unter Übergeben von Daten zwischen Testschritten.
Wie verwende ich Werte in Skripten?
Die Syntax {{variable}} funktioniert nicht direkt in Skripten. Verwenden Sie stattdessen:
pm.variables.get("$.2.response.body.token");
Passen Sie die Schritt-ID und den Feldpfad an Ihren Ablauf an.
Kosten Verzweigungen extra oder benötigen sie Self-Hosting?
Die Apidog-Dokumentation nennt keine separaten Planbeschränkungen für Flusskontrolle, bedingte Verzweigungen, Schleifen oder Datenübergabe. Ebenso wird für diese Funktionen keine Unterscheidung zwischen Cloud und Self-Hosting genannt.
Zusammenfassung
Lineare Tests zeigen oft nur, dass etwas fehlgeschlagen ist. Mit einer bedingten Verzweigung sehen Sie, wo der Fehler entstanden ist, und vermeiden unnötige Folgeanfragen.
Der praktische Ablauf lautet:
- Login-Anfrage hinzufügen.
- Bedingte Verzweigung einfügen.
- Login-Status oder Body-Feld aus dem vorherigen Schritt referenzieren.
- Checkout im
if-Pfad ausführen. - Fehler im
else-Pfad sichtbar machen. - Dasselbe Szenario mit
apidog runin CI ausführen.
Teste Apidog kostenlos und erweitere lineare API-Tests um Szenarien, die auf echte API-Antworten reagieren.



Top comments (0)