-
JSONPath方式断言
{ "success": true, "errCode": null, "errMessage": null, "statDate":"6月28日", "data": [ { "name": "人口", "value": "1", "unit": "万人", "rateName": "", "rateValue": null, "statDateStr": "截至6月27日", "dataSource": "百度", "detailFlag": false, } ], "notEmpty": true, "empty": false }
-
手工写入:
. s u c c e s s 、 .success、 .success、.data[0].value、$.data[-1].value
-
正则断言
正整数:\d+$、正浮点数:^\d+(\.\d+)?$、浮点数:(\+|\-)?\d+(\.\d+)?$
-
beanshell脚本断言
-
beanshell中获取系统变量
// 外部定义 cur_date变量为”6月28日“ String app_date = "6月28日"; if(app_date.equals("${cur_date}")){ log.info(app_date_str); }
-
beanshell中通过内置函数获取日期
# 定义变量时可用 ${__timeShift(yyyy-MM-dd,,,,)} # 当前时间,输出格式为2023-06-28格式 ${__timeShift(MM月dd日,,,,)} # 当前时间,输出格式为X月X日,用0补充 ${__timeShift(M月d日,,,,)} # 当前时间,输出格式为X月X日,不用0补充 ${__timeShift(M月d日,,PT8h,,)} # 当前8小时后时间,输出格式为X月X日,不用0补充
-
beanshell中通过代码获取日期
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.json.*; Date date = new Date(); // 获取当前日期 SimpleDateFormat sf = new SimpleDateFormat("M月"); // 定义输出格式 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); date = calendar.getTime(); String cur_month = sf.format(date); // 输出当前日期月,”6月“ calendar.add(Calendar.MONTH,-1); // 向前推一个月 date = calendar.getTime(); String last_month = sf.format(date); // 输出当前日期前一个月,”5月“
-
取接口返回JSON数据
import org.json.*; import java.util.regex.Matcher; import java.util.regex.Pattern; String response_data = prev.getResponseDataAsString(); // 以String形式返回接口响应内容
-
取层级json数据
import org.json.*; import java.util.regex.Matcher; import java.util.regex.Pattern; String response_data = prev.getResponseDataAsString(); JSONObject data_obj = new JSONObject(response_data); // 将String类型转换为JSON格式 String apps_str = data_obj.get("data").get("statDate").toString();// 取样例中"6月28日"。
-
取层级多维json数据
import org.json.*; import java.util.regex.Matcher; import java.util.regex.Pattern; String response_data = prev.getResponseDataAsString(); JSONObject data_obj = new JSONObject(response_data); String apps_str = data_obj.get("data").toString(); JSONArray apps_array = new JSONArray(apps_str); // 取data下列表内容 String[] result = new String[apps_array.length()]; date_origin = ""; for(int i = 0; i < apps_array.length(); i++){ // 逐项遍历data下内容 JSONObject app_obj = new JSONObject(apps_array.get(i).toString());// 将每项内容再转换为json形式 String name = app_obj.get("name").toString(); if(name.equals("人口")){ date_origin = app_obj.get("statDateStr").toString(); // 获取name为人口项的"截至6月27日" } } String pattern = "截至\\\d+月\\\d+日"; Pattern r = Pattern.compile(pattern); Matcher matcher = r.matcher(date_origin); String app_date = ""; if(matcher.find()){ app_date = matcher.group(0).substring(2); // 取期望的”6月27日“ }
-
beanshell中使用正则表达式
import java.util.regex.Matcher; import java.util.regex.Pattern; //从”截至6月27日“取"6月27日" String data_origin = "截至6月27日" String pattern = "截至\\d+月\\d+日"; Pattern r = Pattern.compile(pattern); Matcher matcher = r.matcher(date_origin); String app_date = ""; if(matcher.find()){ app_date = matcher.group(0).substring(2); // 取第2个字符及以后数据 } log.info(app_date); // 输出”6月27日“
-
beanshell中进行断言及输出内容
// 假设cur_date为外部配置的变量 // 假设app_date = "6月28日” if(app_date.equals("${cur_date}")) { log.info(app_date); AssertionResult.setFailure(false); // 设置断言成功 }else{ AssertionResult.setFailure(true); // 设置断言失败 AssertionResult.setFailureMessage("更新时间不及时,"+app_date); // 设置断言失败提示 }
-