JMeter提取参数除了使用正则提取器或者JSON提取器,也可以用万能BeanShell。
假设需要从数据库查到短信记录,再提取验证码,短信记录表中短信内容字段为
{"BATNO":"11100","CODE":"001912"}
1、正则提取
import java.util.regex.Matcher;
import java.util.regex.Pattern;
code_content = vars.getObject("code_content").toString();
pattern = "\"CODE\":\"(.+?)\"";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(code_content);
m.find();
code = m.group(1);
vars.put("verifyCode",code);
2、JSON提取
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSON;
import java.io.*;
code_content = vars.get("code_content_1").toString();
JSONObject jsonObject = JSON.parseObject(code_content);
code = jsonObject.getString("CODE");
vars.put("verifyCode",code);
如果json中有数组
code_content = "{\"data\": {\"codeList\": [{\"BRCH_NO\": \"09100\",\"CODE\": \"766607\",\"NAME\": \"登录\"},{\"BRCH_NO\": \"09101\",\"CODE\": \"766608\",\"NAME\": \"退出\"}]}}";
JSONObject jsonObject = JSON.parseObject(code_content);
JSONArray arrayObject = jsonObject.getJSONObject("data").getJSONArray("codeList");
JSONObject codeObject = (JSONObject)arrayObject.get(0);
code = codeObject.getString("CODE");
BeanShell提取较灵活,但是用什么方式要根据实际情况确定。