同线程组https://blog.csdn.net/vikeyyyy/article/details/80437530
不同线程组
在JMeter中,正则表达式提取的参数可以跨线程组使用。 通过使用Beanshell后置处理器和属性设置函数,可以将提取的参数设置为全局变量,从而在多个线程组之间共享这些参数。
https://mp.weixin.qq.com/s/4X_WCeVWDkiXXX_YWlPnDg
1)正则表达式提取
引用名称(Reference Name): Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名(例子中我提取的是SOCIAL_NO)
**正则表达式(Regular Expression):**使用正则表达式解析响应结果,"()"表示提取字符串中的部分值,请不要使用"||",除非你本身需要匹配这个字符。
模板: 代表从正则表达式结果引用的样式,其实结果是一组,而不是一个。0代表这一组结果的全部,1代表这一组结果的第1个,以此类推;12代表该正则表达式一组结果中的第1个和第2个,俩结果挨在一起中间没有间隔;3,4代表该正则表达式一组结果中的第3个和第4个,俩结果间有一个逗号相连。
匹配数字: 0代表正则表达式结果组中随机,1代表全部。
**缺省值:**当引用不对时显示传递的信息,通常写一个ERROR。
表达式注意空格!!!
2)json提取
位置:在线程组中,则位置随意,保证接受参数的请求在获取参数请求后面就行;在获取请求下
3)beanshell 提取
jmeter后置处理器之BeanShell PostProcessor - qiaoli - 博客园 (cnblogs.com)
jmeter BeanShell 后置处理器 - 三只松鼠 - 博客园 (cnblogs.com)
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
String response = prev.getResponseDataAsString();
log.info("~~~~~~~~~~~~~~~~~~~打印响应报文1"+ response);
//System.out.println("response:"+response)
JSONObject jso = JSON.parseObject(response);
log.info("~~~~~~~~~~~~~~~~~~~打印响应报文2"+jso);
JSONObject data = jso.getJSONObject("data");
//String tmp1 = jso.getJson("data")
log.info("~~~~~~~~~~~~~~~~~~~打印响应报文3"+data);
JSONObject nlpResult = data.getJSONObject("nlpResult");
log.info("~~~~~~~~~~~~~~~~~~~打印响应报文4"+ nlpResult);
String userQuery =nlpResult.getString("userQuery");
log.info("~~~~~~~~~~~~~~~~~~~打印响应报文5"+ userQuery);
vars.put("userQuerynew",userQuery)
用到fastjson 需要下载jar包,放到lib/ext
获取着将路径在test plan 加到classpath
获取json jsonObject.getJSONObject
获取数组 jsonObject.getJSONArray
获取string jsonObject.getString
使用getString
获取字符串值,getInt
获取整数值,getDouble
获取浮点数值,getBoolean
获取布尔值等