REST-versichert mit Groovy

REST-versichert mit Groovy

1. Überblick

In diesem Tutorial sehen wir uns die Verwendung der REST-gesicherten Bibliothek mit Groovy an.

Da REST-Assured Groovy unter der Haube verwendet, haben wir tatsächlich die Möglichkeit, Groovy-Syntax zu verwenden, um leistungsfähigere Testfälle zu erstellen. Hier wird der Rahmen wirklich lebendig.

Informationen zur Einrichtung, die für die Verwendung von REST-versichert erforderlich ist, finden Sie in unserenprevious article.

2. Groovys Sammlungs-API

Beginnen wir mit einem kurzen Blick auf einige grundlegende Groovy-Konzepte - mit ein paar einfachen Beispielen, um uns mit genau dem auszustatten, was wir brauchen.

2.1. DiefindAll-Methode

In diesem Beispiel achten wir nur aufmethods,closures und die implizite Variableit. Erstellen wir zunächst eine groovige Wortsammlung:

def words = ['ant', 'buffalo', 'cat', 'dinosaur']

Erstellen wir nun eine weitere Sammlung aus den oben genannten mit Wörtern mit einer Länge von mehr als vier Buchstaben:

def wordsWithSizeGreaterThanFour = words.findAll { it.length() > 4 }

Hier istfindAll() eine Methode, die auf die Sammlung angewendet wird, wobeiclosure auf die Methode angewendet wird. Dasmethod definiert, welche Logik auf die Sammlung angewendet werden soll, und dasclosure gibt der Methode ein Prädikat zum Anpassen der Logik.

Wir fordern Groovy auf, die Sammlung zu durchlaufen und alle Wörter zu finden, deren Länge größer als vier ist, und das Ergebnis in eine neue Sammlung zurückzugeben.

2.2. Die Variableit

Die implizite Variableit enthält das aktuelle Wort in der Schleife. Die neue SammlungwordsWithSizeGreaterThanFour enthält die Wörterbuffalo unddinosaur.

['buffalo', 'dinosaur']

NebenfindAll() gibt es noch andere Groovy-Methoden.

2.3. Dercollect Iterator

Schließlich gibt escollect, es ruft den Abschluss für jedes Element in der Sammlung auf und gibt eine neue Sammlung mit den Ergebnissen von jedem zurück. Erstellen wir eine neue Sammlung aus den Größen der einzelnen Elemente in der Sammlung vonwords:

def sizes = words.collect{it.length()}

Das Ergebnis:

[3,7,3,8]

Wir verwendensum, wie der Name schon sagt, um alle Elemente in der Sammlung zu addieren. Wir können die Elemente in dersizes-Sammlung folgendermaßen zusammenfassen:

def charCount = sizes.sum()

und das Ergebnis ist 21, die Zeichenanzahl aller Elemente in derwords-Sammlung.

2.4. Die Operatoren vonmax/min

Diemax/min-Operatoren werden intuitiv benannt, um die maximale oder minimale Anzahl in einer Sammlung zu ermitteln:

def maximum = sizes.max()

Das Ergebnis sollte offensichtlich sein, 8.

2.5. Derfind Iterator

Wir verwendenfind, um nach nur einem Sammlungswert zu suchen, der dem Abschlussprädikat entspricht.

def greaterThanSeven=sizes.find{it>7}

Das Ergebnis 8 ist das erste Vorkommen des Auflistungselements, das dem Prädikat entspricht.

3. Validieren Sie JSON mit Groovy

Wenn wir einen Dienst beihttp://localhost:8080/odds haben, wird eine Liste der Gewinnchancen unserer Lieblingsfußballspiele wie folgt zurückgegeben:

{
    "odds": [{
        "price": 1.30,
        "status": 0,
        "ck": 12.2,
        "name": "1"
    },
    {
        "price": 5.25,
        "status": 1,
        "ck": 13.1,
        "name": "X"
    },
    {
        "price": 2.70,
        "status": 0,
        "ck": 12.2,
        "name": "0"
    },
    {
        "price": 1.20,
        "status": 2,
        "ck": 13.1,
        "name": "2"
    }]
}

Und wenn wir überprüfen möchten, ob die Gewinnchancen mit einem Status größer als 1 Preise1.20 und 5.25 haben, dann tun wir dies:

@Test
public void givenUrl_whenVerifiesOddPricesAccuratelyByStatus_thenCorrect() {
    get("/odds").then().body("odds.findAll { it.status > 0 }.price",
      hasItems(5.25f, 1.20f));
}

Was hier passiert, ist dies; Wir verwenden die Groovy-Syntax, um das JSON-Array unter dem Schlüsselodds zu laden. Da es sich um mehrere Artikel handelt, erhalten wir eine Groovy-Kollektion. Wir rufen dann diefindAll-Methode für diese Sammlung auf.

Das Abschlussprädikat weist Groovy an, eine weitere Auflistung mit JSON-Objekten zu erstellen, deren Status größer als Null ist.

Wir beenden unseren Pfad mitprice, wodurch groovy angewiesen wird, eine weitere Liste nur der Preise der Gewinnchancen in unserer vorherigen Liste von JSON-Objekten zu erstellen. Wir wenden dann den Hamcrest-Matcher vonhasItemsauf diese Liste an.

4. Validieren Sie XML mit Groovy

Nehmen wir an, wir haben einen Dienst beihttp://localhost:8080/teachers, der eine Liste der Lehrer nachid,department undsubjects zurückgibt, die wie folgt unterrichtet werden:


    
        math
        physics
    
    
        political education
        english
    

Jetzt können wir überprüfen, ob der in der Antwort zurückgegebene Lehrer für Naturwissenschaften sowohl Mathematik als auch Physik unterrichtet:

@Test
public void givenUrl_whenVerifiesScienceTeacherFromXml_thenCorrect() {
    get("/teachers").then().body(
      "teachers.teacher.find { [email protected] == 'science' }.subject",
        hasItems("math", "physics"));
}

Wir haben den XML-Pfadteachers.teacher verwendet, um eine Liste der Lehrer anhand des XML-Attributsdepartment zu erhalten. Wir rufen dann die Methodefindin dieser Liste auf.

Unser Abschlussprädikat fürfind stellt sicher, dass wir nur Lehrer aus der Abteilungsciencehaben. Unser XML-Pfad endet am Tagsubject.

Da es mehr als ein Thema gibt, erhalten wir eine Liste, die wir mit dem Hamcrest-Matcher vonhasItemsvalidieren.

5. Fazit

In diesem Artikel haben wir gesehen, wie wir die REST-gesicherte Bibliothek mit der Sprache Groovy verwenden können.

Den vollständigen Quellcode des Artikels finden Sie in unserenGitHub project.