您的位置:首页 > 理论基础 > 计算机网络

httpclient如何验证响应字段值是否为数字

2017-09-29 13:29 274 查看
本人在使用httpclient做接口功能测试的过程中,有一个需求是验证字段值是否是数字,我设计的用例格式是一个verify_key对应一个verify_value的格式,经过尝试和验证,终于解决了这个问题。数据库中verify_key值为int的时候,我就去验证后面verify_value中的字符是否在相应的json数据中,如果在就去查找后面的值是否是数字,此处不一定是int类型。如果是多个字段使用逗号隔开,不区分中英文逗号,因为会在程序中做兼容。分享代码,供大家参考。

// 获取验证字段类型
private String getDateType(JSONObject response, String key, String value) {
String value1 = value;// 存放一个value,因为后面回去value进行编辑
if (key == null || key.isEmpty()) {
return value1;
}
if (key.equalsIgnoreCase("int")) {
if (!response.toString().contains(value1)) {
return author;
}
value = value.replace(",", ",");// 替换掉中文逗号
if (value.indexOf(",") == -1) {// 如果不存在逗号,则直接进入验证
boolean result = checkNum(response.toString(), value1);
return result ? value1 : author;
} else {// 如果包含逗号,先将中文逗号转化为英文都好
List<String> list = new ArrayList<>();// 用list存放获取到的value中的值
for (int i = 0; i < 10; i++) {// for循环获取验证文本
if (value.indexOf(",") == -1) {// 如果已经到头,则直接赋值并添加list,跳出循环
String key1 = value;
list.add(key1);
break;
}
String key1 = value.substring(0, value.indexOf(","));// 截取字符串
list.add(key1);// 添加list
value = deleteCharFromString(key1 + ",", value);// 删除截取到的字符串
}
boolean result = true;
for (int i = 0; i < list.size(); i++) {
if (!result) {
break;
}
result = result & checkNum(response.toString(), key);// 遍历得到最终结果
}
return result ? value1 : author;// 返回值
}
} else {
return getDataContains(response, key, value1);// 如果不是int,则返回getdatevalue()方法的返回值
}
}


最后一个方法是,从json数据中获取对应值的方法,如果验证失败,就会调用验证包含的方法,如果失败继续调用验证字段值方法,防止一些用例编写上的错误。

其中checknum的方法如下:

public boolean checkNum(String text, String key) {
boolean result = true;
key = "\"" + key + "\"";
String key1 = text;
String key0;
String key2;
while (result) {
if (!key1.contains(key)) {
break;
}
key1 = key1.substring(key1.indexOf(key));
key0 = key1.substring(0, key1.indexOf(","));
key2 = key0.substring(key0.indexOf(":") + 1);
result = isNumber(deleteCharFromString("\"", key2));
key1 = deleteCharFromString(key0, key1);
}
return result;
}


这里并未使用正则匹配,主要原因两个,第一我对正则使用并不非常有把握,时间紧,第二,非数字的相应内容并不十分清楚。以后会继续优化代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息