一、CSV参数化设置:
1、添加CSV Data Set Config
![](https://img-blog.csdnimg.cn/img_convert/011c2bec519a12d6d8c5430819700df9.png)
文件名:手工创建一个txt文件,后缀改为csv用Excel就可以打开;
文件编码:UTF-8,根据所测试系统支持的编码格式设置;
变量名:其实就是Csv文件中第一行;必须用英文逗号分割
忽略首行:如果在CSV文件中设置了变量名,这里一定要设置为True,否则变量名称会被识别为数据;
分隔符:通常建议用,
是否允许带引号:默认为False
遇到文件结束符再次循环:这里和循环控制器或线程组的循环次数相关
设置为False时:如果循环控制器或线程数的循环次数>csv文件数据行,那么超过的循环中,变量就取不到值;
设置为True时:如果循环控制器或线程数的循环次数>csv文件数据行,那么超过的循环中,变量就会再次从csv文件的第二行开始取值;
![](https://img-blog.csdnimg.cn/img_convert/9a124304a7d1fad168df7ecbe086377f.png)
![](https://img-blog.csdnimg.cn/img_convert/accad175b9966d4c316d920835b5c0e9.png)
2、 CSV文件的参数如何在脚本中使用?
1)使用CSV Data Set Config 参数化后,定义的CSV文件中的变量,就可以直接在Jmeter中使用,使用方式:${变量名}
如:
![](https://img-blog.csdnimg.cn/img_convert/2281abfd087353cabc71afa065f00a2b.png)
3、它是如何自动循环取CSV文件中变量值的?
1)在循环控制器中,设置循环次数,每循环一次,自动去下一行的值;
2)注意:前提是,CSV Data Set Config 必须在循环控制器内:如果在循环控制器外部,那么只会默认取第一行数据;
![](https://img-blog.csdnimg.cn/img_convert/5d4f8c92c7a7b9a8b6712de08beaf6f2.png)
二、JDBC返回结果集作为参数
1、知识点:
1)计数器:放在循环控制器下面,每循环一次,计数器按设定的(递增)步频累加计数,存储到指定的变量中;
2)变量嵌套使用:变量中再使用变量
2、计数器使用:
1)Starting value:起步值
2)递增:每循环一次增加数
3)Maximum value:最大值,累加到最大值就停止累加
4)数字的格式:0,表示1位数,如:0、1、2~10;00,表示2位数,如:01、02~10
5)引用名称:其实是变量名称,每次计数的结果存储在应用名称中,在Jmeter中可以使用${引用名称} 的方式使用;
![](https://img-blog.csdnimg.cn/img_convert/666e484ace1855430818066136985092.png)
3、变量嵌套使用:
1)如果变量名称中要再使用变量,在Jmeter中如何使用?示例:
![](https://img-blog.csdnimg.cn/img_convert/131fc2b8c4a0fcf68e0e8a51d3bcdb2c.png)
![](https://img-blog.csdnimg.cn/img_convert/7094f613e3b98e104c5de1a78b4b5f2e.png)
user本身是一个变量,是jdbc返回的结果集【上图是返回的用户名】;此示例中user里面存储的是用户名,那么在登录接口中需要循环取出里面的每个登录用户;实际应该这么取:${user_1} 表示取第一个用户;${user_2} 表示取第二个用户,以此类推;也就是后面的数字需要用变量,这样才能自动循环取出;
Index是上面计数器的变量,那么这里就涉及到变量的嵌套。
此示例中,变量user中还需要再使用变量Index;
2)方式1:函数助手的 _V 函数
${__V(user_${Index})}:
${__V()}:嵌套函数 __V 的语法规则
user_${Index}:user为一个变量,${Index}为一个变量,_为分隔符,这个可以自定义;实际运行时,会先将${Index}的值取出来,如:1,然后于use拼接为一个新的变量:${user_1}; 这样就将jdbc返回的user结果集中的第一个用户取出来了:UI-user01;
![](https://img-blog.csdnimg.cn/img_convert/21210fa83d503b2a92fda4089d03a308.png)
3)方式2:beanshell函数
${__BeanShell(vars.get("user_${Index}")}
${__BeanShell()}:BeanShell语法,表示()中的是BeanShell脚本;
"user_${Index}":与__V 函数相同;