JMeter下变量在线程组间的使用

来源:互联网 发布:windows能开发ios吗 编辑:程序博客网 时间:2024/05/22 20:06

方法1:线程组间通信(Inter-Thread communication)

线程组A的PostProcessor组件是将(正则表达式)匹配的数据放入FIFO quene中,由线程组B的PreProcessor取出读取,所以不适合我使用的场景(线程组A的循环次数与线程组B不一致),在这边就不做详细介绍。
synchronization
具体“Inter-Thread Communication”的使用,可参考jmeter-plugins.org

方法2:使用JMeter自带属性(Property)

1.创建2个线程组(1st Thread Group 和2nd Thread Group);
Test Plan

2.对于线程组1的http请求,解析服务端响应,并对变量token赋值;
Json Path Extractor

具体“Json Path Extractor”的安装使用,可参考jmeter-plugins.org

3.变量token赋值后,将变量传入自定义属性token中;
Beanshell Assertion
这里需要说明一下,函数__setProperty用于设置JMeter属性的值,属性对于Jmeter而言是全局的,可在线程组间使用。

函数参数 描述 是否必须 属性名 待设置属性名 是 属性值 属性的值 是 True/False 是否返回属性原始值 否

_
4.在线程组2中需要使用函数__property()来实现对变量${token}的调用;
http request
这里需要说明一下,函数__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”),但是并不保存函数的返回值。

0 0