方法1:线程组间通信(Inter-Thread communication)
线程组A的PostProcessor组件是将(正则表达式)匹配的数据放入FIFO quene中,由线程组B的PreProcessor取出读取,所以不适合我使用的场景(线程组A的循环次数与线程组B不一致),在这边就不做详细介绍。
具体“Inter-Thread Communication”的使用,可参考jmeter-plugins.org
方法2:使用JMeter自带属性(Property)
1.创建2个线程组(1st Thread Group 和2nd Thread Group);
2.对于线程组1的http请求,解析服务端响应,并对变量token赋值;
具体“Json Path Extractor”的安装使用,可参考jmeter-plugins.org
3.变量token赋值后,将变量传入自定义属性token中;
这里需要说明一下,函数__setProperty用于设置JMeter属性的值,属性对于Jmeter而言是全局的,可在线程组间使用。
函数参数 | 描述 | 是否必须 |
---|---|---|
属性名 | 待设置属性名 | 是 |
属性值 | 属性的值 | 是 |
True/False | 是否返回属性原始值 | 否 |
_
4.在线程组2中需要使用函数__property()来实现对变量${token}的调用;
这里需要说明一下,函数__property会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。
函数参数 | 描述 | 是否必须 |
---|---|---|
属性名 | 获取属性值、所需的属性名 | 是 |
变量名 | 重用函数计算值的引用名 | 否 |
默认值 | 属性未定义时的默认值 | 否 |
例如
__property(user.dir):返回属性user.dir的值。
__property(user.dir,UDIR):返回属性user.dir的值,并保存在变量UDIR中。
__property(abcd,ABCD,atod):返回属性abcd的值 (如果属性没有定义,返回”atod”),并保存在变量ABCD 中。
__property(abcd,,atod):返回属性abcd 的值(如果属性没有定义,返回”atod”),但是并不保存函数的返回值。