[JAVA] REST-API-Test mit REST Assured Part 2

Einführung

Ich habe REST Assured im vorherigen "REST API-Test mit REST Assured" verwendet. Ich habe eine Einführung in das Schreiben von REST-API-Tests geschrieben. Das letzte Mal habe ich es nur berührt, aber dieses Mal werde ich mehr praktische Inhalte schreiben.

Wie benutzt man

Informationen zur Antwort

Überprüfen Sie die Antwort mit JSONPath

Beschreiben Sie die Verwendung der Analysemethode in JSONPath. Die Anforderung wird wie gewohnt mit "Given (). Get ()" oder "Given (). Post ()" ausgelöst, und die Antwort wird nach "then ()" analysiert.

    @Test
öffentlicher Leertest() {
        given()
                .get("/v1/clients/15930/account-periods")
        .then()
                .body("accountPeriods", hasSize(3))
                .body("accountPeriods.accountPeriodId", hasItems(24216, 24582, 24583))
                .body("accountPeriods[0].accountPeriodId", equalTo(24216))

        ;
    }

hasSize () undhasItem (),gleichTo ()sindstatische org.hamcrest.Matchers importieren. *; Sie können es aufrufen, indem Sieeinstellen. Das Parsen von JSON mit JSONPath folgt im Wesentlichen aus Root mit . als Trennzeichen. Es gibt verschiedene Notationen, bitte probieren Sie sie aus.

Analysieren Sie den JSON des Antworttextes und erhalten Sie den spezifischen Teil als Zeichenfolge

Im vorherigen Beispiel wird die Antwort direkt bestätigt, aber ich werde eine Methode schreiben, um sie einmal als Variable zu empfangen.

    @Test
öffentlicher Leertest() {
        String response = get("/v1/clients/15930/account-periods").asString(); //Empfangen Sie ResponseBody als String
        int id = from(response).get("accountPeriods[0].accountPeriodId"); //Als JSON analysieren und das Ziel mit JSONPath abrufen
        out.println(id);
    }

Wirf eine Anfrage direkt mit get () und erhalte das Ergebnis als String alsasString (). Analysieren Sie es dann als JSON mit from (String) und verwenden Sie dann JSONPath mit get (), um den angegebenen Teil im JSON abzurufen.

Sie können es auf diese Weise schreiben, z. B. wenn Sie den Wert der Antwort in die nächste Anforderung aufnehmen möchten.

Über Anfrage

Als nächstes werde ich die Variation erklären, wie eine Anfrage geworfen wird.

Verwenden Sie Pfadparameter (verwenden Sie Argumente mit variabler Länge).

Die erste Methode zur Verwendung des Pfadparameters von URI besteht darin, den variablen Teil mit einem Argument variabler Länge zu übergeben. Befolgen Sie die Offizielle Dokumentation zu Pfadparametern.

Hier wird auch das Anforderungsprotokoll ausgespuckt.

    @Test
public void path parameter() {
        given()
                .log()
                .all()
                .get("/v1/clients/{id}/account-periods", 15930)
        .then()
                .body("accountPeriods", hasSize(3))
        ;
    }

In dem Teil mit "get (" / v1 / clients / {id} / account-period ", 15930)" wird das Argument "15930" auf den Teil mit "{id}" und "/ v1 / clients / 15930" angewendet Die GET-Methode wird für / account-period` aufgerufen.

Da es auf "log (). All ()" gesetzt ist, wird das Requst-Protokoll an die Standardausgabe ausgegeben und kann überprüft werden.

Pfadparameter verwenden (Karte verwenden)

Erklärt, wie Pfadparameter in Map übergeben werden. Übergeben Sie Map als Argument als "get (" / v1 / clients / {id} / {api} ", params)", rufen Sie den Wert von Map mit den Variablen "id", "api" im Pfad als Schlüssel ab und übergeben Sie Ist zusammengebaut.

    @Test
public void Path Parameta Map() {
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", "15930");
        params.put("api", "account-periods");
        given()
                .log()
                .all()
                .get("/v1/clients/{id}/{api}", params)
        .then()
                .body("accountPeriods", hasSize(3))
        ;
    }

JSON in Anfragetext aufnehmen

Erklärt, wie JSON in Request aufgenommen wird, was in der REST-API üblich ist. Genau wie Offizielle Dokumentation zu Request Body können Sie JSON im Argument von body () festlegen. ist. Da die Protokollausgabe von Request ebenfalls festgelegt ist, können Sie überprüfen, ob sie tatsächlich POSTED wurde.

    private static String postJson = "{sessionId: \"abc\"}";

    @Test
öffentlicher nichtiger JSON-Übertragungstest() {
        given()
                .log() //Ausloggen
                .all() //Alles
                .body(postJson) //Body-Einstellungen anfordern
                .post("/v1/clients/15930/account-periods")

        .then()
                .log()
                .body()
        ;
    }

Am Ende

Wir haben einige Beispiele mit REST Assured eingeführt. In der Realität werden verschiedene Muster zum Testen benötigt, aber der Name, der die API intuitiv macht und offizielles Dokument Assured / wiki / Usage) ist so reichhaltig, dass Sie sich nicht verlaufen.

Sitzungsfilter, der zum Zeitpunkt der Authentifizierung eine Routineverarbeitung ausführt, und [Protokollierung](https: /), die ebenfalls im Beispiel verwendet wurde /github.com/rest-assured/rest-assured/wiki/Usage#logging), [Validierung des JSON-Schemas](https://github.com/rest-assured/rest-assured/wiki/Usage#json-schema- Validierung) usw. werden ebenfalls erläutert. Bitte lesen Sie die offizielle Dokumentation und probieren Sie es aus.

Recommended Posts

REST-API-Test mit REST Assured Part 2
REST-API-Test mit REST Assured
Testen Sie die Web-API mit junit
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 2).
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 1).
Feder mit Kotorin --4 REST API Design
Erstellen Sie eine REST-API mit Apache2 + Passenger + Sinatra.
Kompatibel mit Android 10 (API 29)
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 2
SaveAsBinaryFile mit Spark (Teil 2)
Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
[Spring Boot] Benutzerinformationen mit Rest API abrufen (Anfänger)
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 1
Automatisch mit Messgerät testen
Lasttest mit JMeter
Machen Sie einen Unit-Test mit Junit.
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Was ich mit der Redmine REST API süchtig gemacht habe
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Bean-Mapping mit MapStruct Teil 1
Erstellen Sie eine XML-RPC-API mit Wicket
Bean-Mapping mit MapStruct Teil 3
Bean-Mapping mit MapStruct Teil 2
Verwenden Sie die Bulk-API mit RestHighLevelClient
Testen Sie Active Strage mit RSpec
Einführung in die EHRbase 2-REST-API
Testen Sie den GraphQL-Resolver mit rspec
API mit Spring + Vue.js verknüpfen
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil2 -Benutzerauthentifizierung-
[Anfänger] Versuchen Sie, die REST-API für die Todo-App mit Spring Boot zu schreiben