针对 RESTAssured/Java 中的 JSON 响应验证 UI
Validating UI against JSON response in RESTAssured/Java
我有一个测试场景,其中我的 Web 应用程序中的字段填充了来自 json 响应的数据。
e.g-> 有一个字段 person id,当输入该字段时会填充 UI 中的其他十几个字段,根据其他隐藏字段的响应启用或禁用某些字段作为回应。
因此,我必须将 json 响应与 UI 中的显示值相匹配。
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 行中遇到错误,它显示语法错误,我也很困惑是否还有其他方法。
你需要转义一些符号(特别是"
):
"{\"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");
可以找到要转义的完整字符列表 here。
我有一个测试场景,其中我的 Web 应用程序中的字段填充了来自 json 响应的数据。
e.g-> 有一个字段 person id,当输入该字段时会填充 UI 中的其他十几个字段,根据其他隐藏字段的响应启用或禁用某些字段作为回应。 因此,我必须将 json 响应与 UI 中的显示值相匹配。 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 行中遇到错误,它显示语法错误,我也很困惑是否还有其他方法。
你需要转义一些符号(特别是"
):
"{\"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");
可以找到要转义的完整字符列表 here。