Проверьте значения в Json Объект, используя Rest Assured - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу убедиться, что id: 1 принадлежит Тигру Никсону

{"status":"success","data":[{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile_image":""}

Я следил за этим документом: https://github.com/rest-assured/rest-assured/wiki/Usage#json-using-jsonpath, этот раздел body("shopping.category.find { it.@type == 'groceries' }.item", hasItems("Chocolate", "Coffee"));

В настоящее время я получаю исключение нулевого указателя. Я мог бы использовать некоторую помощь, чтобы найти решение. Заранее спасибо за ваше время.

import com.google.gson.JsonObject;
import io.restassured.RestAssured;
import org.testng.Assert;

public class RestAssuredExample_2 {

    public void getResponse() {
        JsonObject responseObject = RestAssured.get("http://dummy.restapiexample.com/api/v1/employees")
                .then()
                .extract().response().as(JsonObject.class);

        String emp1Name = responseObject.get("data.find{it.@id=='1'}.employee_name").toString();
        Assert.assertEquals(emp1Name, "Tiger Nixon");
    }

    public static void main(String[] args) {
        RestAssuredExample_2 rest2 = new RestAssuredExample_2();
        rest2.getResponse();
    }
}  

Ошибка:

Exception in thread "main" java.lang.NullPointerException
    at HTTPz.RestAssuredExample_2.getResponse(RestAssuredExample_2.java:16)

1 Ответ

1 голос
/ 15 апреля 2020

Пытался повторить этот сценарий

String responseObject = RestAssured.get("http://dummy.restapiexample.com/api/v1/employees").then().extract().asString();
JsonPath js = new JsonPath(responseObject);
String emp1Name = js.get("data.find {it.id =='1'}.employee_name").toString();
System.out.println(emp1Name);

И я получаю значение для emp1Name как " Тигр Никсон "

Разница:

Оригинал: it.@id=='1'

Шахта: it.id =='1'

Кажется, что @ для XMLPath, а не для JSONPath, и, честно говоря, я не буду знать об этом подробно, потому что я использую JSONPath только в течение очень долгого времени:)

...