【Jmeter5.1】函数助手一:__BeanShell、__char、__counter、__CSVRead

引言:函数助手的功能包含参数化、运算、字符编码格式转换、获取运行时参数等;函数的调用都是以${__function()}这种形式开始的,注意:"__"是英文半角两个下横线,function是函数名,其中的参数不同函数不同参数;

一、__BeanShell脚本语言

__BeanShell函数入参可以是BeanShell语法的程序语句或者BeanShell脚本文件。可以通过Ctrl+Shift+F1调出函数助手面板,或者在工具栏进入;

二、__char

功能:把一组数字转换成Unicode字符,比如我们输入65、65两个数字,生成__char(65,66),即转换为AB;生成的表达式,如有转义字符"\",请删除即ok;

三、__counter

__counter可以作为一个计数器使用,支持多线程(比如:有线程1与线程2,__counter计数器能分开记录线程迭代的次数,也可将两个线程迭代次数合在一起记录)。

下面我们就__counter的两种计数方式进行结果对比:

1.使用true,记录每个线程迭代次数;前提:线程数设置:10,每个线程循环数设置:3】这里还额外调用了__threadNum函数,主要是记录运行线程的ID;

运行结果:

2.使用false,记录所有线程迭代次数和;前提:线程数设置:10,每个线程循环数设置:3】,

运行结果:

四、__CSVRead

__CSVRead(),可以从文件中读取指定列的值;可以有4种不同情况,实现不同效果;分别是1.不同线程读取不同值;2.不同迭代读取固定值;3.不同迭代读取不同值;4,使用文件的别名调用表达式;

下面就来逐一对比:

步骤一:首先准备一个文件:E:\Jmeter\csvread.txt,来准备数据:

步骤二:使用__CSVRead()函数,生成表达式;https://blog.csdn.net/ak739105231/article/details/87534103

情况一:接下来,首先验证:在多线程的情况下(循环数:1),每个线程获取的文件内容,均是下一行的;

运行结果:

情况二:接下来,验证:在单线程的情况下,循环数大于1,每个线程循环迭代获取的文件内容,均是第一行的值,是不会变的;

 java请求不变都是用${__CSVRead(E:\Jmeter\csvread.txt,0)}:${__CSVRead(E:\Jmeter\csvread.txt,1)},就不截图;

运行结果:

情况三:接下来,验证:在单线程,循环数大于1的情况下,如何使每个线程循环迭代获取的文件内容,是下一行的值?答案是序列号填写:next();另外还要指定起始列(见下面截图2描述);

调用是需注意:要先表明读取哪一列的值;

若是两列都想对应着且要读取下一行的,如name、password必须对应,但又要求是下一行;

运行结果:

所以,${__CSVRead(E:\Jmeter\csvread.txt,next())}只起到换行的作用,什么时候需要换行,就加上next()就行。

举例2:

准备数据:

运行登录jforum结果:

情况四:接下来,使用文件别名,在调用__CSVRead()时,第二个参数;

java请求中,使用别名,代表文件目录;

发布了232 篇原创文章 · 获赞 141 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/ak739105231/article/details/103351137