QF-Test stellt eine Skripting-API zum Senden von HTTP(S)-Anfragen und zum Validieren der
Antworten bereit, die während der Ausführung eines Web-Request-Knotens empfangen werden.
Skripte innerhalb eines Pre-Request-Handler-Knotens arbeiten typischerweise mit einem
WebRequest-Objekt, das aus dem aktuell ausgeführten Web-Request initialisiert wird. Dieses
Objekt wird während der Ausführung der Pre-Request-Handler-Knoten automatisch als qw.request
gebunden, sodass Skripte Parameter ändern können, bevor die Anfrage gesendet wird.
Nach Empfang der Antwort wird diese Skripten innerhalb eines Post-Request-Handler-Knotens sind, in Form
eines WebResponse-Objekts zur Verfügung gestellt, das automatisch als qw.response
gebunden wird.
Die Implementierung basiert auf dem Java-Paket
java.net.http und mehrere seiner Schnittstellen sind, wie unten beschrieben, direkt verfügbar.
Der Einfachheit halber wurden WebRequest und WebResponse um Standard-Getter und
-Setter ergänzt, die vereinfachte Skriptausdrücke wie qw.request.uri oder
qw.response.body ermöglichen.
HTTP-Header sind ebenfalls ein Sonderfall. Oft können sie wie eine einfache Schlüssel:Wert-Map von
Strings behandelt werden, aber die HTTP-Spezifikation legt fest, dass bei den Schlüsseln die Groß- und
Kleinschreibung keine Rolle spielt und dass es mehrere Werte pro Schlüssel geben kann. Die
HttpHeaders-Klasse implementiert diese Funktionalität. Auch hier bietet QF-Test Zugriff auf diese
Implementierung und stellt zusätzlich Komfortmethoden für Skripte, die unter anderem direkten Zugriff auf
einwertige HTTP-Header bieten.
Über qw.request und qw.response erlaubt dieses Modul Zugriff auf die Anfrage und
Antwort, die bei der letzten Ausführung eines Web-Request-Knotens gesendet und empfangen wurden. In
erster Linie sind sie zur Verwendung in Pre-Request-Handler und Post-Request-Handler-Knoten gedacht.
Sie bleiben aber darüber hinaus gültig, um die Analyse in Skript-Konsolen zu ermöglichen sowie auf die Werte
der Antwort in Knoten zuzugreifen, die nach dem Web-Request ausgeführt werden.
Außerdem enthält das qw-Modul folgende Hilfsmethoden:
| |
| | | WebResponse sendRequest(String url, String method, Map<String, String> headers, String body) throws TestException, IOException, InterruptedException | |
| Parameter | url |
URL des Empfängers.
| method |
HTTP-Methode.
| headers |
HTTP-Header als Map.
| body |
Body als String.
| | Rückgabewert |
Ein WebResponse-Objekt.
| | | WebRequest getRequest() | |
| Rückgabewert |
Das WebRequest-Objekt des aktuellen Threads.
| | | WebResponse getResponse() | |
| Rückgabewert |
Das WebResponse-Objekt des aktuellen Threads.
| | |
|
| |
Die Klasse WebRequest erweitert
HttpRequest und implementiert gleichzeitig ihren eigenen
HttpRequest.Builder, sodass die Methoden der beiden Klassen direkt verfügbar sind. Diese
Methoden werden hier nicht dokumentiert, Sie finden sie in der oben verlinkten offiziellen Dokumentation.
Für einen vereinfachten Skriptzugriff stellen die QF-Test Klassen alternative Getter- und
Setter-Methoden bereit. Sie sind ihren Gegenstücken weitgehend ähnlich, mit zwei wichtigen Ausnahmen:
-
Die Methode
getHeaders() liefert kein HttpHeaders-Objekt wie
headers() zurück, sondern eine vereinfachte Map mit von Groß- und
Kleinschreibung unabhängigen Schlüsseln und jeweils genau einem Wert, dem letzten, der für den
jeweiligen Schlüssel im ursprünglichen HttpHeaders-Objekt definiert wurde.
-
Die
get...()-Methoden liefern niemals einen Optional-Wert zurück, sondern den
enthaltenen Wert oder einen Standardwert - üblicherweise null - falls das
Optional leer ist.
| |
| | | void addHeader(String name, String value) | |
| Parameter | name |
Der Name des zu setzenden Headers.
| value |
Der zu setzende Wert.
| |
| | String body() | |
| Rückgabewert |
Der Request-Body als String oder null.
| | | WebRequest body(String body) | |
| Parameter | body |
Der Text, der als Body des Requests festgelegt werden soll.
| | Rückgabewert |
Dieser WebRequest.
| | | String getBody() | |
| Rückgabewert |
Der Request-Body als String oder null.
| | | String getHeader(String name) | |
| Parameter | name |
Der Name des Headers.
| | Rückgabewert |
Der zuletzt für den angegebenen Namen gesetzte Header-Eintrag oder null, falls keiner
vorhanden ist.
| | | Map<String,String> getHeaders() | |
| Rückgabewert |
Die vereinfachten Header dieses Requests als Map mit Schlüsseln ohne Berücksichtigung der
Groß-/Kleinschreibung und nur dem letzten Wert pro Namen.
| | | List<String> getHeaders(String name) | |
| Parameter | name |
Der Name, für den die Header abgerufen werden sollen.
| | Rückgabewert |
Alle Header-Werte für den angegebenen Namen oder eine leere Liste, wenn keine vorhanden sind.
| | | String getPayload() | |
| Rückgabewert |
Der Request-Body als String, möglicherweise der Inhalt der Payload-Datei.
| | | String getPayloadFile() | |
| Rückgabewert |
Der Pfad zur Payload-Datei oder null.
| | | String header(String name) | |
| Parameter | name |
Der Name, für den der Header abgerufen werden soll.
| | Rückgabewert |
Der zuletzt gesetzte Header für den angegebenen Namen oder null, wenn keiner vorhanden ist.
| | | List<String> headers(String name) | |
| Parameter | name |
Der Name, für den die Header abgerufen werden sollen.
| | Rückgabewert |
Alle Header-Werte für den angegebenen Namen oder eine leere Liste, wenn keine vorhanden sind.
| | | WebRequest method(String method) | |
| Parameter | method |
Die festzulegende Methode.
| | Rückgabewert |
Dieser WebRequest.
| | | String payload() | |
| Rückgabewert |
Der Request-Body als String, möglicherweise der Inhalt der Payload-Datei.
| | | WebRequest payload(String body) | |
| Parameter | body |
Der Text, der als Request-Body festgelegt werden soll.
| | Rückgabewert |
Dieser WebRequest.
| | | String payloadFile() | |
| Rückgabewert |
Der Pfad zur Payload-Datei oder null.
| | | WebRequest payloadFile(String filename) | |
| Parameter | filename |
Der Pfad zur festzulegenden Payload-Datei.
| | Rückgabewert |
Dieser WebRequest.
| | | void setBody(String body) | |
| Parameter | body |
Der Text, der als Request-Body festgelegt werden soll.
| |
| | void setMethod(String method) | |
| Parameter | method |
Die festzulegende Methode.
| |
| | void setPayload(String body) | |
| Parameter | body |
Der Text, der als Request-Body festgelegt werden soll.
| |
| | void setPayloadFile(String filename) | |
| Parameter | filename |
Der Pfad zur der festzulegenden Payload-Datei.
| |
| |
|
| |
Das qw.response-Objekt wird in allen Skriptsprachen während der Ausführung einer
Post-Request-Handler gebunden. Es kann zum Lesen und Validieren von Antwortdaten verwendet werden.
Dieses Objekt bleibt gültig, bis ein weiterer Web-Request ausgeführt wird, was bedeutet, dass es auch in
Skripten außerhalb der WebAPI-Knoten verwendet werden kann.
| |
| | | Object getBody() | |
| Rückgabewert |
Der Response-Body.
| | | String getBodyString() | |
| Rückgabewert |
Der Response-Body als String.
| | | String getHeader(String name) | |
| Parameter | name |
Der Name, für den der Header abgerufen werden soll.
| | Rückgabewert |
Der zuletzt gesetzte Header für den angegebenen Namen oder null, wenn keiner vorhanden ist.
| | | Map<String,String> getHeaders() | |
| Rückgabewert |
Die vereinfachten Header dieser Response als Map mit Schlüsseln ohne Berücksichtigung der
Groß-/Kleinschreibung und nur dem letzten Wert pro Namen.
| | | List<String> getHeaders(String name) | |
| Parameter | name |
Der Name, für den die Header abgerufen werden sollen.
| | Rückgabewert |
Alle Header-Werte für den angegebenen Namen oder eine leere Liste, wenn keine vorhanden sind.
| | | Object getJson() | |
| Rückgabewert |
Das JSON-Objekt, das den Body repräsentiert. null, wenn der Body kein String ist
oder das Parsen fehlschlägt.
| | | String getPayloadFile() | |
| Rückgabewert |
Der absolute Pfad der gespeicherten Response-Datei oder null, wenn
kein Response-Dateipfad konfiguriert wurde.
| | | SSLSession getSslSession() | |
| Rückgabewert |
Die SSLSession der Response.
| | | int getStatusCode() | |
| Rückgabewert |
Der Statuscode der Response.
| | | URI getUri() | |
| Rückgabewert |
Die URI der Response.
| | | HttpClient.Version getVersion() | |
| Rückgabewert |
Die HTTP-Protokollversion der Response.
| | | String header(String name) | |
| Parameter | name |
Der Name, für den der Header abgerufen werden soll.
| | Rückgabewert |
Der zuletzt gesetzte Header für den angegebenen Namen oder null, wenn keiner vorhanden ist.
| | | List<String> headers(String name) | |
| Parameter | name |
Der Name, für den die Header abgerufen werden sollen.
| | Rückgabewert |
Alle Header-Werte für den angegebenen Namen oder eine leere Liste, wenn keine vorhanden sind.
| | | Object json() | |
| Rückgabewert |
Das JSON-Objekt, das den Body repräsentiert. null, wenn der Body kein String ist
oder das Parsen fehlschlägt.
| | |
|
| |