鉴于我有这个JSON数组:
{
value: ["000", "111", "345", "987"]
}
我想使用Rest-assured来验证字段的格式,使用它/ when / then / then结构。
given().
queryParam("myparam", myparamvalue).
when().
get(callRoot).
then().
body("value", matchesPattern("[0-9][0-9][0-9]");
如何让Res Rest确保循环并对JSON数组中的每个值应用测试?
我不知道JSON数组中有多少个值。它可能只有1;它可能是100。
答案 0 :(得分:2)
您可以使用JsonPath
并执行以下操作:
given().
queryParam("myparam", myparamvalue).
when().
get(callRoot).
then().
body("value.*", matchesPattern("[0-9][0-9][0-9]");
有关详细信息,请参阅https://github.com/rest-assured/rest-assured/wiki/usage#json-example。
或者您可以将回复提取为String
,将其转换为JSONObject
,提取JSONArray
字段中的values
,然后将正则表达式应用于每个数组中的项目:
Response response = given().queryParam("myparam", myparamvalue).when().get(callRoot).
JSONObject responseJson = new JSONObject(response.getBody().asString());
JSONArray values = responseJson.getJSONArray("values");
for(int i = 0; i < values.length(); i++) {
String value = values.getString(i);
Assert.assertThat(values, matchesPattern("[0-9][0-9][0-9]"));
}