Как получить объект JSON из массива Json в RestAssured

Может ли кто-нибудь помочь мне решить этот сценарий:

Я новичок в RestAssured и работаю с JSON в нашем скрипте автоматизации. У меня есть API, ответ которого JSONArray, т.е.

  [{
    "id": 1002,
    "entity": "testcase",
    "fieldName": "TextName",
    "displayName": "Name"
  }, {
    "id": 1003,
    "entity": "testcase",
    "fieldName": "steps",
    "displayName": "TestSteps"
  }]

Во время автоматизации для проверки мне нужно получить ответ. Я пробовал приведенный ниже, но не получил ожидаемого результата

 String API = "/field/entity/testcase"
 Response response = given().auth().preemptive().basic("test.manager",     "test.manager").when().get(API);
    JSONObject JSONResponseBody = new   JSONObject(response.body().asString());
    Assert.assertEquals(JSONResponseBody.getString("fieldName"), "TextName");

а также я пробовал с этим:

    JSONArray array = new JSONArray();
    JsonObject JSONResponseBody = array.getJsonObject(0);

Заранее спасибо


person Kavana    schedule 08.02.2016    source источник


Ответы (3)


Вы должны попробовать это:

String API = "/field/entity/testcase"
Response response = given().auth().preemptive().basic("test.manager", "test.manager").when().get(API);
JSONArray JSONResponseBody = new   JSONArray(response.body().asString());
Assert.assertEquals(JSONResponseBody.getJsonObject(0).getString("fieldName"), "TextName");
person Kruti Patel    schedule 08.02.2016

Такая проверка может быть достигнута непосредственно с помощью самого restAssured - ValidatableResponseOptions.

    String API = "/field/entity/testcase"
    given().auth().preemptive().basic("test.manager", "test.manager").
    when().get(API).
    then().assertThat().body("fieldName[0]", equalTo("TextName");

Примечание. После статического импорта требуется проверка «equalTo».

import static org.hamcrest.Matchers.equalTo;
person Anoop Philip    schedule 23.06.2016

В качестве еще одной идеи о том, как это сделать, я бы сделал это, может быть, так:

ValidatableResponse statusResponse = givenJsonRequest().when()
    .get("/field/entity/test").then();
ArrayList<Map<String,?>> jsonAsArrayList = statusResponse.extract()
    .jsonPath().get("");
Optional<Map<String,?>> filtered = jsonAsArrayList.stream()
    .filter(m -> m.get("fieldName1").equals("Whatever1"))
    .filter(m -> m.get("jsonObject").toString().contains("Whatever2"))
    .findFirst();
Assert.assertTrue(filtered.isPresent(), "Test expected a result after filtering.");
person djangofan    schedule 07.04.2018