Ověřit více odpovědí tělo uzlů (hodnoty pro klíče) v ujištěni + java

0

Otázka

Vzhledem k tomu,:

  package com.company;

import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.hamcrest.core.Is;


public class Main {

    public static void main(String[] args) {
        RestAssured.baseURI = "///URL";
        RequestSpecification request = RestAssured.given();

        String body_content = "{\n" +
                "\t\"name\":\"Santosh\",\n" +
                "\t\"email\":\"[email protected]\",\n" +
                "\t\"age\":30,\n" +
                "\t\"address\":{\n" +
                "\t\t\"city\":\"Bangalore\",\n" +
                "\t\t\"state\":\"karnataka\",\n" +
                "\t\t\"pinCode\":\"123\"\n" +
                "\t}\n" +
                "}";

//        JSONObject jsonObject = new JSONObject(body_content);

        request.header("Content-Type", "application/json");
        request.body(body_content);

        Response response = request.post("/persons");
        System.out.println("The response is \n -------------------- \n" + response.getBody().asPrettyString());

        String myPersonId = response.path("name").toString();
        System.out.println("Its my personId = " + myPersonId);
        response.then().assertThat().body("name", Is.is("Santo1sh"));
        response.then().assertThat().body("email", Is.is("not the wright email")); // Basically I want to test multiple assertions in the same execution


    }
}

Reakce těla json je:

{
    "personId": "c27a3364-cd93-4c10-bb58-4a17c520b54d",
    "name": "Santosh",
    "age": 30,
    "email": "[email protected]",
    "address": {
        "city": "Bangalore",
        "state": "karnataka",
        "pinCode": 560037
    }
}

S výše uvedený kód, když poslední tvrzení je popraven, bude selhat záměrně, a žádný z níže uvedených akcí bude také vykonán. To, co jsem snažím udělat, je vyzkoušet více hodnot z reakce těla, ale ne zastavit na poprvé nepodaří, jak je to provedeno v ujištěni?

++ Výjimkou, že je zvýšena:

   Exception in thread "main" java.lang.AssertionError: 1 expectation failed.
JSON path name doesn't match.
Expected: is "Santo1sh"
  Actual: Santosh
automated-tests java maven rest-assured
2021-11-22 12:10:48
1

Nejlepší odpověď

0

Existují 2 přístupy pro váš problém.

Řešení 1: využít výhod tvrzení knihovna má vestavěný Soft assertion funkce, jako je TestNG a AssertJ.

Například: pomocí AssertJ

@Test
public void test_1(){
   ...
   SoftAssertions softly = new SoftAssertions();
   softly.assertThat(response.path("name")).isEqualTo("Santo1sh");
   softly.assertThat(response.path("email")).isEqualTo("not the wright email");
   softly.assertAll();
}

Řešení 2: Rekonstruovat reakci na POJO pak porovnat objekty. Definovat, jak se objekty stejné, vaše POJO muset přepsat equals a hashCode metoda

Person expect = new Person(); 

//set value for Person fields: personId, name, email ...

Person actual = JsonPath.with(res).getObject("", Person.class);

assertThat(actual, is(expect));
import lombok.Data;
import lombok.EqualsAndHashCode;


@Data
@EqualsAndHashCode
class Person{
    private String personId;
    private String name;
    private int age;
    private String email;
    private Address address;
}

@Data
@EqualsAndHashCode
class Address{
    private String city;
    private String state;
    private long pinCode;
}
2021-11-22 14:06:10

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................