简体   繁体   中英

Validating UI against JSON response in RESTAssured/Java

I have a test scenario wherein the fields in my Web application are populated with data from json response.

eg -> there is a field person id which when entered populates dozen other fields in UI ,make certain fields enabled or disabled depending upon other hidden field response in response. So, i have to match the json response with the displayed values in UI. The format of JSON request and response are like name value pair as in below:

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

I got to know about RestAssured and HTTP client library to achieve this but i am not sure on how to send the request part or retrieve the response because in many cases the responses are very big(more than 150 name value pair).

Below is what i have tried:

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();

Now, I am getting error in Method.POST line, its showing syntax error also i am confused as to whether there are other approaches or not.

You need to escape some symbols (specially " ):

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

In your code:

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");

A complete list of characters to be escaped can be found here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM