3.7函数助手
在性能测试时,为了能模拟真实的用户请求,我们需要将每次请求发送的参数都不一样,这个过程称为参数化;
3.7.1csvread
我们介绍一种csvread的方式,通过读取一个csv的文件,也就是一个txt文件来实现参数值的变化;
上面一行添加我们的txt文件及路径,txt文件里面量值逗号分开即可,最后通过生成一个变量,把这个参数变量放到你需要的地方,替换原来写死的内容;
1)新建一个csv或者text文件,里面保存要读取的参数,每个参数间用逗号相隔。每行表示每一组参数,每列表示每种参数:
比如:
admin,zh_CN
manager,zh_CN
文件为用户名和语言,用逗号隔开,每一列表示一种参数,每一行则表示一组参数;
默认下,函数会在遇到每一个逗号处断行;如果希望在输入列中使用逗号,那么需要换一个分隔符(设置属性csvread.delimiter实现),且该符号没有在CSV文件任何列中出现。
修改jmeter.properties文件:
#csvread.delimiter=,
修改为
csvread.delimiter=?
即把分隔符修改为?问号,注意前面的#号代表注释,要去掉。重启Jmeter生效。
2)打开Jmeter的函数助手,选择csvread函数:
函数参数化,通过菜单栏的options(选项)->函数助手对话框打开,在打开的对话框中可以有多种函数方式;
其中:
CSV file to get values from | *alias:要读取的文件路径,为绝对路径
Column number of CSV file | next | *alias:从第几列开始读取,注意第一列是0
点击生成按钮,则生成了函数,为:${__CSVRead(F:\Jmeter\函数助手数据\HTTP.txt,1)}csvread就是从test.txt文件中读取第一列的第二个参数。以此类推。
3)将生成的参数拷贝到需要参数化的参数的值一项中,如果要修改要读取的参数的列,则可以直接在参数值中修改数字而不用重新在csvread函数生成中修改。
4)JMeter执行的时候,如果有多个线程,顺序读取第一行的数字,如果线程组多余文件中的行数,则循环读取。使用*ALIAS特性可以多次打开同一个文件,另外还能缩减文件名称。
这一函数并不适合于读取很大的文件,因为整个文件都会被存储到内存之中。对于较大的文件,请使用配置元件CSV Data Set或者StringFromFile 。
希望对你有帮助,祝你有一个好心情,加油!
若有错误、不全、可优化的点,欢迎纠正与补充!