Zum Inhalt springen

Setup- und Teardown-Skripte

Ein Setup-Skript läuft einmal direkt vor einer Prüfung und ein Teardown-Skript einmal direkt danach. Damit holen Sie ein Token, bereiten Daten für die Prüfung vor oder räumen auf, was die Prüfung angelegt hat. Sie funktionieren bei API-Prüfungen, Multistep-Prüfungen und Browser-Prüfungen. DNS- und TCP-Monitore führen sie nicht aus.

Um eines hinzuzufügen, öffnen Sie den Prüfungseditor, suchen Sie Setup- oder Teardown-Skripte ausführen?, klicken Sie auf Editor anzeigen und nutzen Sie die Tabs Setup-Skript und Teardown-Skript. Die Skripte sind JavaScript und laufen bei jedem Lauf, in jeder Region, in einer isolierten Sandbox, wobei ihre Konsolenausgabe erfasst wird.

  • API-Prüfung: Das Setup-Skript erhält request; das Teardown-Skript erhält request und response (response.statusCode, response.body als Text, response.headers). Das Objekt request in einem Setup-Skript ist eine Kopie, die Ihr Skript lesen kann. Es zu ändern ändert nicht die Anfrage, die LoadFocus sendet. Nutzen Sie Setup also, um vorab Arbeit zu erledigen (zum Beispiel einen Datensatz anzulegen, den die Prüfung braucht), und das Teardown-Skript, um nach der Antwort aufzuräumen.
  • Multistep-Prüfung: Das Setup-Skript erhält ctx. Alles, was Sie in ctx.vars ablegen, können Sie in jedem Schritt als {{name}} verwenden. Das Teardown-Skript erhält ctx und das Lauf-result.
  • Browser-Prüfung: Das Setup-Skript läuft, bevor der Browser startet, und füllt ctx.vars für den Ablauf; das Teardown-Skript läuft danach.

In einem Skript können Sie require nutzen für:

  • got und axios: HTTP-Aufrufe, zum Beispiel um Zugangsdaten gegen ein OAuth-Token einzutauschen. Aufrufe an private, Loopback- und Link-Local-Adressen werden blockiert.
  • crypto: Hashes und HMAC-Signaturen.
  • @faker-js/faker: realistische, eindeutige Testdaten.
  • url und path: Helfer zum Bauen von URLs und Pfaden.
  • Snippets: gemeinsamer Code, einmal gespeichert und mit require("./snippets/name") geladen. Siehe Snippets.

Die Ausgabe von console.log wird unter den Logs des Skripts angezeigt.

Beispiel: ein OAuth-Token im Multistep-Setup holen

Abschnitt betitelt „Beispiel: ein OAuth-Token im Multistep-Setup holen“
const got = require('got');
const tokenResponse = await got.post('https://auth.example.com/oauth/token', {
json: {
grant_type: 'client_credentials',
client_id: '${{CLIENT_ID}}',
client_secret: '${{CLIENT_SECRET}}',
},
}).json();
// Das Token jedem Schritt als {{token}} zur Verfügung stellen
ctx.vars.token = tokenResponse.access_token;

Setzen Sie in jedem Schritt den Header-Wert auf Bearer {{token}}.

Beispiel: im Teardown einer API-Prüfung aufräumen

Abschnitt betitelt „Beispiel: im Teardown einer API-Prüfung aufräumen“
const got = require('got');
// Hat die Anfrage eine Ressource angelegt, löschen Sie sie, damit der Monitor keine Spuren hinterlässt
if (response.statusCode === 201 && response.body) {
const created = JSON.parse(response.body);
await got.delete('https://api.example.com/items/' + created.id, {
headers: { Authorization: 'Bearer ${{API_TOKEN}}' },
});
}

Verweisen Sie in einem Skript mit ${{NAME}} auf ein gespeichertes Secret oder eine Variable. LoadFocus ersetzt es kurz vor der Ausführung des Skripts durch den Wert, sodass Zugangsdaten nie im Klartext im Skript stehen. Ein Verweis ohne Dollarzeichen, etwa {{NAME}}, wird in einem Skript nicht ersetzt. Siehe Variablen.

Im Skripteditor führt SKRIPT AUSFÜHREN das Skript gegen den echten Endpunkt aus und zeigt das Ergebnis. Öffnen Sie LOGS ANZEIGEN, um zu sehen, was das Skript ausgegeben hat. Ein Testlauf zählt als ein Lauf auf Ihre monatliche Nutzung.

  • Jedes Skript ist auf 100 KB begrenzt.
  • Schlägt das Setup-Skript fehl, wird die Prüfung nicht gesendet und der Lauf als fehlgeschlagen markiert. Das ist meist gewollt: kein gültiges Token, keine gültige Prüfung.
  • Ein Teardown-Fehler wird in den Logs gemeldet, ändert aber nicht das Ergebnis des Laufs.