高级性能测试系列《12. 使用V函数,进行变量引用,得到想要的结果值 》

2022-06-21 15:37:01 浏览数 (1)

目录

  • 一、注意
  • 二、V函数
    • 1.做一个变量的引用
    • 2.用V函数
    • 3.注意
  • 三、总结

一、注意

jmeter中,做功能测试、自动化测试时,你可以使用Beanshell元件。

但是,在性能测试中,能不用,坚决不要用带有任何Beanshell字样的元件,相关脚本里都不要去使用这个。

要写脚本,用其它的元件,不用Beanshell的元件。

如果你要写java脚本,也不要使用Beanshell的任何元件,建议大家使用JSR223开头的元件。

原因是:本身这个Beanshell元件的代码,消耗的资源就非常得多,它的性能比较差。以Beanshell开头的所有元件的性能都比较差。

做功能测试的时候不需要考虑性能。

但是在性能测试里,能节约一点资源就节约一点资源,所以能不用Beanshell元件就不用,如果用了,会发现误差是Beanshell元件资源消耗比较多而导致的。

jmeter支持的语言:java、jython、python、groovy、js。不支持python3

二、V函数

V函数:叫做拼接函数。

1.做一个变量的引用:

${__counter(,)}

参考:${__counter(,)}函数的用法

循环次数为3次

用户定义的变量的名称

${var_${__counter(,)}}

编写http请求的名称

运行结果

我们期望它得到过程是:{var_1} {var_2}

期望的结果是:引用变量的值

实际结果是: 要进行两次变量计算。这个方法是办不到,得不到我们想要的结果

2.用V函数

得到了这样一个V函数:${__V(var_${__counter(,)},)}

这个V函数把它的这个(var_${__counter(,)},)整体进行计算,计算完毕后,得到一个var_1var_2var_3

然后再使用$符号和大括号扩起来,进行了变量引用,这样才得到想要的结果值。

http请求:修改了名称和消息体数据

运行成功

3.注意

取样器在运行的时候,HTTP请求里的名称也会进行代码的运算。

register------${__V(var_${__counter(,)},)}放到名称里面,也只是为了在察看结果树里面可以直观的看到值,不用再点击进入request body里去看。

三、总结

类似: var_1var_2这种前缀相同,后缀是递增数字的变量名称,常见于通过jdbc协议从数据库中获取数据时。

select name from table where id like '123%'; ---结果可能有多条数据。

这个脚本就会返回多个name值, 我用table_name这个变量来接收这几个值。

就出现变量名称变成了:table_name_1代表第一个值,table_name_2代表第二个值...........

${变量名称} 得到变量的

${__V(前缀_可变后缀)}得到是这个“前缀_可变后缀”的变量名的

${__P(属性名称)} 得到的是属性名称的

脚本链接:

链接:https://pan.baidu.com/s/1nXz4orJqu2VK8q5UB8IWqA?pwd=1234 提取码:1234

0 人点赞