Jmeter-CSV 数据文件设置

一、参数说明


1、理解

CSV(CSV Data Set Config) 数据文件变量是指从外部 csv 文件读取数据出来作为变量

2、设置 CSV 数据文件

测试计划->添加->配置元件->CSV 数据文件设置,查看CSV数据文件的各个要素

(1)文件名

csv 文件路径,可以是绝对路径或者相对路径(建议设置成相对路径,填写相对于脚本的路径,后续远程压测或迁移时,可以更好的找到文件)

(2)文件编码

编码格式,与所选文件编码格式保持一致

(3)变量名称(西文逗号间隔)

如果文件中只有一个变量,直接写变量名,如果有多个变量,用英文的逗号隔开(例:var1,var2)

(4)忽略首行(只在设置了变量名称后才生效)

  • True:设置为 True 时,从文件第二行开始读取,此时文件第一行为变量名,例:var1,var2;设置为 True,变量名称可以不用设置,在文件第一行设置即可
  • False:一般设置为 False,文件从第一行开始设置变量数据,在变量名称中设置名称

(5)分隔符(用 ‘\t’ 代替制表符)

根据文件中的分隔符进行填写,默认:,

(6)是否允许带引号?

  • True:参数文件包含引号时,实际的数据为引号中的数据。比如参数文件中的数据为"1,2",当使用该参数时,实际取得值为1,2
  • False:参数文件包含引号时,实际取得值为全部的值。比如参数文件中的数据为"1,2",当使用该参数时,实际取得值为"1,2"会取成两个参数

(7)遇到文件结束符再次循环?

  • True:参数文件中的数据循环使用,测试按照线程组中的设置执行。比如csv 文件共有 10 条记录,但线程数有 15 个,循环 10 次后,重头开始循环取值
  • False:参数文件不再循环遍历取值

(8)遇到文件结束符停止线程

  • True:当执行完参数文件中所有参数后,直接停止线程
  • False:不停止

(9)线程共享模式(Sharing mode)

所有线程(All threads):参数文件对所有线程共享,这包括同一测试计划中的不同线程组(测试计划下的所有线程组下的所有线程共享参数文件,所有线程之前参数取值互相影响,线程在同一次迭代下取值相同)

当前线程组(Current thread group): 只对当前线程组中的线程共享(当前线程组下的所有线程公用一个参数文件,同一个线程组下的线程之前取值相互影响,线程在同一次迭代下取值相同)

当前线程(Current thread): 仅当前线程获取(即每个线程获取一个参数文件,各个线程之间参数取值互不影响,线程在同一次迭代下取值相同)

当参数文件的位置与线程组在同级下,线程组下存在循环控制器时,循环控制器下的参数取值相同

线程组下存在循环控制器时,当参数文件在循环控制器下,循环控制器下每次迭代时重新取值

线程组下存在仅一次控制器,参数文件在仅一次控制器下,当参数在仅一次控制器下取值一次之后,之后无论哪次迭代参数取值都不变,类似于unique once

注意:创建 CSV 文件最好用 notepad 创建,编码格式为 UTF-8

二、测试计划演示


1、编写csv文件

新建一个文件名为 data.csv 的文件,并添加数据,如图所示:

2、配置CSV 数据文件

测试计划右键 -> 添加 -> 配置元件 ->CSV 数据文件设置

(1)文件名:文件所在路径

(2)文件编码:中文使用 utf-8

(3)变量名称:var1,var2

(4)是否允许带引号?:文件中,有个参数为 “张,三”,此处选择 True 允许,取值时,会将 “张,三” 当一个值;如果选 False,会当两个值取 “张” “三”

3、添加线程组

测试计划右键-> 添加 -> 线程(用户) ->线程组,线程数设置为3


4、添加取样器

线程组右键 -> 添加 -> 取样器 -> JSR223 Sampler,添加脚本

脚本文件:

log.warn("线程:"+ctx.getThreadNum()+";变量1:"+vars.get("var1")+";变量2:"+vars.get("var2"));


5、设置日志级别

选项 ->日志级别 -> WARN,设置日志级别为 WARN

6、启动测试计划并打开日志

选项 -> 日志查看,可以看到3个线程各取了一组变量,如图所示:


三、测试计划设计

脚本在测试计划演示脚本基础上验证

1、忽略首行:True

(1)修改 data.csv 文件中数据

(2)修改CSV 数据文件设置,清除日志并启动(删掉变量名称、忽略首行选择 True

2、是否允许带引号?:False


修改CSV 数据文件设置,清除日志并启动(是否允许带引号?:False

data.csv 文件中第一组数据中的 “张,三” ,取值时,只取了 "张


3、遇到文件结束符再次循环?:False


(1)修改线程组,将线程数改为 4
(2)CSV 数据文件设置,清除日志并启动(遇到文件结束符再次循环?:False

  • 文件中只有3组数据,而线程数为4,当执行第四个时,文件中的数据已循环取出一次,不进行循环的话,第四个线程无数据


4、遇到文件结束符停止线程?:True


修改CSV 数据文件设置,清除日志并启动(遇到文件结束符停止线程?:True

  • 线程数为4,当第三个线程执行完后,文件 data.csv 中的三组数据全部取完,线程组停止运行,第四个线程不再执行


5、线程共享模式:当前线程


(1)修改线程组,使每个线程循环执行2次


(2)CSV 数据文件设置,清除日志并启动(线程共享模式:当前线程

  • 每个线程获取一个参数文件,各个线程之间参数取值互不影响


6、线程共享模式:当前线程组


(1)将线程组和 JSR223 Sampler 复制出一份

(2)设置两个线程组线程数都为3,都循环2次,修改下输出代码

log.warn("线程组二:"+ctx.getThreadNum()+";变量1:"+vars.get("var1")+";变量2:"+vars.get("var2"));


(3)CSV 数据文件设置,清除日志并启动(线程共享模式:当前线程组

当前线程组下的所有线程公用一个参数文件,同一个线程组下的线程之前取值相互影响

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter中读取CSV数据通常使用CSV Data Set Config元件,它可以读取CSV文件中的数据并将其用作测试中的变量。以下是使用CSV Data Set Config元件的步骤: 1. 在测试计划中添加线程组,并在线程组下添加CSV Data Set Config元件。 2. 配置CSV Data Set Config元件,包括文件名、分隔符、变量名称等。你可以参考下面的截图进行配置。 3. 在你的测试计划中使用变量名称引用CSV文件中的数据。例如,如果你在CSV Data Set Config元件中将变量名称设置为“username”,则你可以在HTTP请求中使用“${username}”引用CSV文件中的用户名。 下面是一个简单的示例: 1. 创建一个名为“test.csv”的CSV文件,包含以下内容: ``` username,password user1,pass1 user2,pass2 user3,pass3 ``` 2. 创建一个名为“Test Plan”的测试计划,包含一个线程组和一个CSV Data Set Config元件。 3. 在CSV Data Set Config元件中进行如下配置: - Filename: test.csv - File Encoding: UTF-8 - Variable Names: username,password - Delimiter: , 4. 在线程组中添加一个HTTP请求,并将请求的用户名和密码设置为变量名称引用CSV文件中的数据,例如: - Name: Login Request - Server Name or IP: example.com - Port Number: 80 - HTTP Request Path: /login - Method: POST - Parameter Name: username - Parameter Value: ${username} - Parameter Name: password - Parameter Value: ${password} 5. 运行测试计划并查看测试结果。 通过这种方法,你可以在JMeter中轻松地读取CSV文件中的数据并将其用作测试中的变量,从而方便地进行数据驱动测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值