1. __property函数
作用
读取 Jmeter 属性
语法格式
${__property(key,var,default)}
参数讲解
小栗子
${__property(key)}
- 读取 key 属性
- 如果找不到 key 属性,则返回 key(属性名)
${__property(key,,default)}
- 读取 key 属性
- 如果找不到 key 属性,则返回 default
${__property(key,prop,default)}
将读取到的属性值存储到 prop 变量中,可通过 ${prop} 引用
实际栗子
线程组
结果树
前三个 sampler 读取的属性是存在的,所以会返回对应的值
最后一个 sampler 读取了不存在的属性,返回了默认值
重点
- 如果没有加 , 则代表没有传默认值,意味着默认值参数是 null(空),会返回属性名,如: ${__property(keys)}
- 如果加了 , 代表有传参但没有填值,代表值为空字符串,如: ${__property(keys,,)}
- 对于这个函数,若属性不存在,且默认值传了空字符串,则不会返回属性名,如最后一个 sampler
- 如果不传默认值参数,不等价于默认值可以填 null,这是字符串的 null,不是空
2. __P函数
作用
和 __property 作用一样,不过这是简化版的
语法格式
${__P(key,default)}
参数讲解
和 __property 的区别
无法指定引用变量名
若属性名不存在,且未提供默认值,会返回 1 而不是属性名
函数助手
实际栗子
线程组
结果树
重点
- 如果没有加 , 则代表没有传默认值,意味着默认值参数是 null(空),会返回 1,如: ${__P(user.dirs)}
- 如果加了 , 代表有传参但没有填值,代表值为空字符串,如: ${__P(user.dir,)}
- 对于这个函数,若属性不存在,且默认值传了空字符串,则不会返回 1,如最后一个 sampler
- 如果不传默认值参数,不等价于默认值可以填 null,这是字符串的 null,不是空
3.总结
1、函数助手里的 __P及__property的使用
${__P(init,2)} , ${__property(init,start,200)}
可以自行定义变量名称,及变量的默认值
P 变量名为init, 值为2 ,使用的时候直接${__P(init,2)}就可以,改变量的结果为2
${__property(init,start,200)} 变量名为init, 默认值为200,同时会将200默认传给start这个变量,start可进行再使用 ${start}
2、还有一种用法是直接在jmeter.properties的文件中添加几个固定的变量
#默认的一些值
group1.thread = 10
group2.rampup=1
设置好这些内容后重启jmeter,可以通过p /property使用这些变量
${__P(group1.thread)} , ${__property(group1.thread,save,)}
这样的变量会去jmeter.properties里面读取相应的配置默认值
P和property的区别就是是否将第一个变量的值存储到另外一个变量中
其它JMeter内置函数请参考51CTO搜索-51CTO.COM