场景:性能测试或者接口测试,如果想跨线程引用(案例:A线程组里面的一个输出,是B线程组里面的一个输入,这个时候如果要引用),这个时候你就必须要设置全局变量;全链路压测也需要分不同场景,通常情况,一个场景就是一个线程组;
实现方法:beanshell脚本和函数助手_setPerproty,目前这种方法都可以跨线程的全局变量;
操作流程如下:beanshell脚本如下:
- 输出结果的处理,使用方法正则、json提取器或者json/yaml,提取的教程这里就不需要赘述,等我有空专门或者你们百度去
- 提取的数据后面加上beanshell后置处理器,脚本如下
String userId=bsh.args[0];
//print (token);
${__setProperty(newtoken,${token},true)} - 全局变量设置了就需要引用了,这里我就讲述2种引用方法,第一个很简单,在另外一个线程组对应的参数后面,直接把上述全局的前部分拿来就用,即${__setProperty(newtoken,)};还有一种就是使用__P函数,${__P(newtoken,0000)},0是默认值,都是可以调用;
还有另外一种方式设置全局变量:
- 增加beanshell sampler,在需要提取的请求后面;
- 打开函数助手:Ctrl+shift+f1;找到setProperty函数,填写设置变量名称和将那个变量设置为全局变量:第一个值是下一个线程引用的名称,第二个值是被设置全局的变量,第三个是默认值;
3.将函数助手生成的脚本,复制粘贴在步骤1里面;${__setProperty(newtoken,{token},0000)}
3.引用的方法和上面的一样,没有什么区别