Проверка пользовательского интерфейса против ответа JSON в RESTAssured/Java
У меня есть тестовый сценарий, в котором поля в моем веб-приложении заполняются данными из ответа 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 ответ
Вам нужно экранировать некоторые символы (особенно "
):
"{\"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");
Полный список символов для экранирования можно найти здесь.