1)_setproperty函数:将值保存成jmeter属性
2)_property函数:在其他线程组中使用property函数读取属性
applay to 选择“主请求和子请求”
3、创建【BeanShel后置处理器】,编写脚本,将正则表达式中的变量变成全局变量:
利用函数助手:将需要提取的设置为全局变量
${__setProperty(p_csrf_token,${csrf_token},)};
- 后面的 ${csrf_token} 是正则表达式提取器中的变量;
- 前面的 csrf_token是新定义的全局变量,后续跨线程组使用时是使用的这个变量名。
使用上述变量处通过函数助手property参数化写入${__property(p_csrf_token,,)}即可实现跨线程组。
Jmeter之内置函数__property和__P的区别_jmeter property函数-CSDN博客
创建并配置好【HTTP请求】
参数调用:
${__property(p_csrf_token,,)}
String newToken = vars.get("token");//将变量token赋值给变量newToken
props.put("newToken1",newToken);//将newToken赋值给newToken1,此时newToken1已成为全局变量,其他线程直接引用${__P(newToken1)}
String aaa = props.get("newToken1");//获取全局变量newToken1复制给aaa
BeanShell后置处理器
- String newToken = vars.get("token");
- props.put("newToken1",newToken);
- String aaa = props.get("newToken1");
import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("newToken1","${token}");//将变量token赋值给全局变量newtoken1,其他线程直接引用${__P(newToken1)}
BeanShell后置处理器
- import org.apache.jmeter.util.JMeterUtils;
- JMeterUtils.setProperty("newToken1","${token}");
cookie和token都用此方法
修改bin目录下全局配置文件jmeter.propties中的【CookieManager.save.cookies=true】--注意修改后需要重启jmeter
从调试取样器中取得Cookie的值并且设置为全局变量
注意:变量名不能随便取,必须响应头里面的变量名一致
- ${__setProperty(W2S_lastvisit,COOKIE_W2S_lastvisit,)}
- ${__setProperty(W2S_visitor,COOKIE_W2S_visitor,)}
- ${__setProperty(csrf_token,COOKIE_csrf_token,)}
把取得的值设置到Http Cookie管理器中
注意:
- cookie管理器与线程组同一级
- cookie管理器中的域一定要填写为正确的请求地址
让线程按顺序执行
运行结果