Проверка пользовательского интерфейса по ответу 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, она показывает синтаксическую ошибку, также я не понимаю, есть ли другие подходы или нет.


person started late    schedule 16.05.2018    source источник
comment
Вопрос должен быть помечен тегами rest-assured и api-testing. Это не имеет ничего общего с тегами selenium и user-interface.   -  person demouser123    schedule 16.05.2018


Ответы (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");

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

person Peter Samokhin    schedule 16.05.2018
comment
Спасибо @Peter, синтаксическая ошибка исчезла, но при выполнении кода я получаю исключение незаконного аргумента: Invalid Number of Parameters: исключено 1 было 0. Неопределенные параметры - это любой запрос json, который я передал - person started late; 16.05.2018
comment
@startedlate, какую библиотеку вы используете для запросов? - person Peter Samokhin; 16.05.2018
comment
RestAssured 3.1.0 - person started late; 16.05.2018