Проверка пользовательского интерфейса против ответа JSON в RESTAssured / Java - PullRequest
0 голосов
/ 16 мая 2018

У меня есть тестовый сценарий, в котором поля в моем веб-приложении заполнены данными из ответа json.

например, -> есть идентификатор человека поля, который при вводе заполняет дюжину других полей в пользовательском интерфейсе, делает определенные поля включенными или отключенными в зависимости от ответа другого скрытого поля в ответе. Итак, я должен сопоставить ответ JSON с отображаемыми значениями в пользовательском интерфейсе. Формат запроса и ответа JSON подобен паре имя-значение, как показано ниже:

 {
    "viewcode": 20,
    "actioncode": 40,
    "subcode": 0,
    "errorcode": 5,
    "username": "MANAGER",
    "database": "somedb",
    "data": {
        "personid": "070976",
        "hidden_first": "",
        "hidden_second": "",
        "hidden_third": ""
    }
}

Я узнал о RestAssured и клиентской библиотеке HTTP, чтобы добиться этого, но я не уверен, как отправить часть запроса или получить ответ, потому что во многих случаях ответы очень большие (более 150 пар имя-значение).

Ниже я попробовал:

RestAssured.baseuRL="someurl"

RequestSpecification httpRequest=RestAssured.given();

Response response=httpRequest.request(Method.POST,"{{"viewcode":20, "actioncode":40, "subcode":0, "errorcode":5, "username":"MANAGER",  "database":"somedb", "data":{ "personid":"070976", "hidden_first":"", "hidden_second":"", "hidden_third":"" }}");

String responseBody=response.getBody.asString();

Теперь я получаю сообщение об ошибке в строке Method.POST, показывающей синтаксическую ошибку, и я не понимаю, существуют ли другие подходы или нет.

1 Ответ

0 голосов
/ 16 мая 2018

Вам необходимо экранировать некоторые символы (особенно "):

"{\"viewcode\":20, \"actioncode\":40, \"subcode\":0, \"errorcode\":5, \"username\":\"MANAGER\",  \"database\":\"somedb\", \"data\":{ \"personid\":\"070976\", \"hidden_first\":\"\", \"hidden_second\":\"\", \"hidden_third\":\"\" }}"

В вашем коде:

String json = "{\"viewcode\":20, \"actioncode\":40, \"subcode\":0, \"errorcode\":5, \"username\":\"MANAGER\",  \"database\":\"somedb\", \"data\":{ \"personid\":\"070976\", \"hidden_first\":\"\", \"hidden_second\":\"\", \"hidden_third\":\"\" }}";
httpRequest.body(json);
Response response = httpRequest.post("/replace_with_your_endpoint");

Полный список символов, которые нужно экранировать, можно найти здесь .

...