一、CSV数据文件设置
1、简介
CSV数据文件配置(CSV Data Set Config)可以将CSV文件中数据读入自定义变量中
Jmeter中CSV数据文件配置的界面如下图所示:
其中:
(1)文件编码
文件的编码格式,与所选的CSV文件的编码格式保持一致,中文一般选UTF-8编码
(2)分隔符号(用'\t'代替制表符)
根据CSV文件中的分隔符进行填写,默认:,
(3)是否允许带引号
假如CSV文件中有一条数据值为”1,2“,以下分别是选”True“和”False“返回的结果
- True:"1,2"
- False:1,2
(4)遇到文件结束符再次循坏
假如CSV文件中有5条记录,但线程组有10个
- True:循环10次后,重头开始循坏取值
- False:循环10次后,不会重头开始循环取值
(5)遇到文件结束符停止线程
- True:当取完CSV文件中所有的值后,直接停止线程
- False:当取完CSV文件中所有的值后,不会直接停止线程
(6)线程共享模式
- 所有现场:CSV文件的变量可以被同一测试计划中的所有线程组引用
- 当前线程组:CSV文件的变量只可以被当前线程组引用
- 当前线程:CSV文件的变量只可以被当前线程引用
2、验证参数读取正常
(1)根据需要在新增的线程组下设置好配置元件——CSV数据文件设置,我的设置如下图所示:
(2)在同一个线程组下新增取样器——JSR233 Sampler,如下图所示:
在代码框中输入的内容为:
log.warn("线程:"+ctx.getThreadNum()+";用例编号:"+vars.get("testID")+";用例名称:"+vars.get("test_name")+";请求方法:"+vars.get("test_method")+";请求url:"+vars.get("test_url")+";请求体:"+vars.get("test_msg")+";期望:"+vars.get("test_exp")+";备注:"+vars.get("test_other"));
(3)日志级别设置为warm,如下图所示:
(4)运行,查看日志信息
!!!注意,这里CSV文件里有JSON格式的数据(即:{key:value}),如果在配置“CSV数据文件设置”的时候“是否允许带引号”选“True”,有时候(为什么说有时候呢?我这里会出现这个问题可能是因为pwd参数没有加双引号,格式不规范、不统一,后期把CSV文件里面JSON格式数据的键值都统一加上双引号后这个问题就没有复现了),运行后将无法读取到变量的值(如下图所示)
解决方法:修改CSV文件的数据(在{}两侧都加上双引号 )
3、验证遇到CSV文件结束符的配置
(1)步骤同上面的(1)(2)(3),备注:我这里用作验证的CSV文件里面一共有6条数据
(2)将线程组的线程数设置为7
(3)配置元件设置为遇到文件结束符号再次循环且不结束,运行
!!!另外,补充一个点,取样器的名称应用用例编号的变量更易于辨别
(4)配置元件设置为遇到文件结束符号再次循环且结束线程,运行
(5)配置元件设置为遇到文件结束符号不再次循环且不结束,运行
(6)配置元件设置为遇到文件结束符号不再次循环且结束线程,运行
(7)线程组的循环次数设置为2
(8) 运行脚本
二、_CSVRead函数
1、选择函数
2、编辑参数配置
3、生成函数表达式
点击“生成”按钮
4、生成变量
在测试计划中添加自定义变量,注意此步可省略,省略的话用第5步的方法2
5、引用变量
对比之下,_CSVRead函数的功能会更少,比如不能过滤第一行、会一直循环读取文件数据