Как получить атрибут JSON и сохранить их в массиве JAVA? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь в своем тесте RestAssured TestNG утверждать, что для каждого данного ReportCodeNbr в моем JSON-файле есть правильное значение UID.

Я смог успешно сделать это, связав каждую секцию json с жестко закодированным значением индекса, как в этом примере, однако, порядок секций может измениться, что изменит значение индекса и нарушит тест.

Как лучше всего сохранить все значения для ReportCodeNbr для каждого раздела, а затем утверждать, что UID является правильным, не используя жестко закодированное значение индекса, как в моем примере?

Коллега предложил массив, но я не уверен, как это сделать.

Частичный файл JSON с двумя объектами данных:

[
    {
        "Url": null,
        "DataSteward": null,
        "ReportAuthor": null,
        "ReportKey": "100PercentSponsorFundedFaculty",
        "SystemType": null,
        "ReportTitle": "Report",
        "ReportCodeNbr": "FIN1065",
        "PropertyList": null,
        "Title": "100 Percent Sponsor-Funded Faculty",
        "Uid": "97d17dbd-9c3b-46aa-ae0e-39603a32250f"
    },
    {
        "Url": null,
        "DataSteward": null,
        "ReportAuthor": null,
        "ReportKey": "2013BaseYearPaidFTEReport",
        "SystemType": null,
        "ReportTitle": "Report",
        "ReportCodeNbr": "FIN1075",
        "PropertyList": null,
        "Title": "100 Percent Sponsor-Funded Faculty",
        "Uid": "97b3f1e0-b17d-448b-86ae-6ed6b432dcd2"
    }
]

Успешный тест с жестко заданными значениями индекса:

@Test
    public static void firstTest() {
       Response response = given().when().get(baseURI);
       response.then()
               .assertThat().body("ReportCodeNbr[1]", equalTo("FIN1075"))
               .assertThat().body("Uid[1]", equalTo("97b3f1e0-b17d-448b-86ae-6ed6b432dcd2"));}

1 Ответ

0 голосов
/ 28 сентября 2019

Что-то вроде этого должно работать:

Response response = given().when().get(baseURI);    
List<String> jsonResponse = response.jsonPath().getList("Uid");

Затем вы можете Потоковый список и утверждать, что он содержит значение, которое вы ищете, если вы используете> = Java 1.8.В противном случае просто используйте цикл for.

Существует множество способов сделать это.Для получения дополнительной информации см. Здесь: Отличное тестирование , Документы с гарантированным пребыванием (jsonPath)

...