Rest-Assured验证JSON数组中的每个项目

时间:2016-12-23 13:59:15

标签: rest-assured

鉴于我有这个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。

1 个答案:

答案 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]"));
}