Jmeter基础系列(五)JMeter参数化之CSV Data Set Config

5.1 参数化的定义

所谓参数化,就是将客户端发送给服务器处理的数据预先保存到一个参数中的过程。

一般来说,对于功能测试,当用不同的数据测试相同的功能时,我们可以使用参数化来精简测试;对于性能测试,为了真实模拟多个用户的操作行为或应对系统对多个用户同时操作的特殊限制(比如数据唯一性要求),需要使用参数化来解决这些问题。

JMeter提供了非常多的参数化的方式和手段,常见有:

  1. 配置元件 CSV_Data_Set_Config
  2. 内置参数化函数,比如__CSVRead()

5.2 CSV_Data_Set_Config

配置项

1.Filename:

要读取的数据文件的路径或名称。可以使用绝对路径或相对路径。
当使用相对路径表示文件路径时,测试计划所在目录为当前目录。
当JMeter以分布式模式运行时,参数化的数据文件需要复制到每台Slave中,并且要设置相同的目录结构。

2.File Encoding:

若没有设置则以操作系统的字符编码去读取数据文件。
可以指定以何种编码去读取数据文件,以防止出现乱码。
比如操作系统默认字符编码为GBK,而数据文件(CSV文件)的编码为UTF-8,
则读出来的数据肯定为乱码,在此情况下要设置File Encoding为“UTF-8”才能读取成功。

3.Variable Names(comma-delimited):

用于保存数据文件列值的变量名列表。变量名之间用,(逗号)分隔。
若变量名列表为空,JMeter则将数据文件的第一行各字段值作为各个变量名(不论是否忽略第一行)。
比如数据文件中有如下两行值:

 张三,男,25
 李四,女,20

在没有设置变量名列表的情况下,会将第一行的三个值当做变量名:

  张三,男,25
  ${张三},${男},${20}的值分别是:李四,女,20
4.Ignore first line (only used if Variable Names is not empty):

是否忽略数据文件的第一行。这个选项只有在设置了参数名列表时才起作用。
选择True表示忽略第一行,选择False表示不忽略第一行。
一般用在数据文件中有列标题时,因为标题不是值,故考虑可以忽略第一行。
比如数据文件中有如下值:

  name,sex,age
  张三,男,25
  李四,女,20

若此项设置为False,则会将name,sex,age当做变量的值读取,
设置为True会忽略此行,从第二行开始读取。

5.Delimiter (use'\t'for tab):

数据文件中字段的分隔符。
根据分隔符将记录拆分保存到定义的变量中。
默认值为逗号分隔。

6.Allow quoted data?:

数据文件中的值是否允许使用双引号。True表示允许,False表示不允许。
一般用于当值中包含分隔符时,可考虑将值用双引号括起来,屏蔽分隔符的特殊含义。
比如记录了商品编号,名称,价格的数据文件:

  goods_id,goods_name,price
  1,Watch_wanguo,"1,500,000"

若没有使用双引号,商品价格为1,使用了双引号,商品价格为1,500,000

7.Recycle on EOF?:

读取到达数据文件结束(EOF即end of file)处,是否回到文件开始出重新读取。
True循环读取,False不循环读取。

8.Stop thread on EOF?:

读取到达数据文件结束处,是否停止线程。
True停止线程,测试不再进行;False不停止线程,继续循环取值运行测试。

9.Sharing mode:共享模式。

All threads所有线程,
Current thread group当前线程组,
Current thread当前线程。

All threads:
所有线程共享同一个文件。在测试中数据文件只打开一次,每个线程读取不同行的参数值。
每个线程读取的值与线程启动的先后顺序相关;不论线程引用参数与否,每个线程都会分配一个参数值。
Current thread group:
当前线程组。每个线程组都单独打开一个参数文件,不论该线程组内的线程是否引用参数化变量。
Current thread:
当前线程。每个线程都单独打开一个参数文件。
在此模式下,若每个线程需要从不同的值集中取值,可以设置一组参数化数据文件,每个线程对应一个文件。
将线程编号与数据文件名关联起来将可以了。
比如一组文件为: testdata1.csv,testdata2.csv,... ,testdatan.csv
线程编号可以通过内置函数${__threadNum}来获取,
则数据文件名可设置为: testdata${__threadNum}.csv

5.3 应用案例

这里以前面介绍过的查询被购买商品总金额接口为例来讲解。

参数化步骤
1.确定接口参数中哪些请求参数需要进行参数化**

在设计测试用例时,我们针对商品编号,商品规格,商品数量来准备数据,
故对id,attr,number参数化

2.将测试数据放在外部一个文档保存,文件类型为csv或txt --> *.csv or *.txt

新建一个testdata.csv,一行写一个用例,多个参数值默认用,分隔:

case_name,id,attr,number
   case1,9,226,3
   case2,,226,1  
   case3,9,,1
   case4,9,226,
3.添加并配置CSV Data Set Config配置元件
4.在请求中将写死的数据用第3步中定义的变量进行替换
data --> ${varName}
  比如  ${attr}
5.配置参数化

5.1 将线程数设置为用例的个数
5.2 循环控制请求的次数

  • a.添加一个循环控制器,设置其循环次数为测试用例个数
  • b.将CSV Data Set Config配置元件与请求移到循环控制器下面
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!对于JMeter参数操作,可以使用CSV文件来提供数据。下面是使用CSV文件进行参数的步骤: 1. 准备CSV文件:首先,您需要准备一个包含参数值的CSV文件。该文件可以使用任何文本编辑器创建,并按照逗号分隔的格式来定义参数。例如,可以创建一个名为data.csv的文件,其中包含如下内容: ``` param1,param2,param3 value1_1,value1_2,value1_3 value2_1,value2_2,value2_3 value3_1,value3_2,value3_3 ``` 2. 添加CSV数据文件设置:在JMeter中,打开测试计划并右键单击线程组,选择"Add" -> "Config Element" -> "CSV Data Set Config"。在CSV Data Set Config元件的"Filename"字段中,输入CSV文件的路径。例如,如果data.csv文件位于与JMX测试计划相同的目录中,您可以输入`${__P(csvFilePath,data.csv)}`作为路径。 3. 配置CSV Data Set Config:在CSV Data Set Config元件中,您可以设置一些选项来控制参数的行为。例如,您可以指定逗号作为分隔符、是否循环读取文件等。 4. 使用参数值:在需要使用参数值的地方,您可以使用`${param1}`、`${param2}`等变量来引用CSV文件中的对应值。例如,在HTTP请求的路径字段中,可以输入`/api/${param1}`来使用CSV文件中的第一列值作为路径的一部分。 通过以上步骤,您就可以使用CSV文件来参数JMeter测试计划中的请求了。请注意,CSV文件的行数决定了参数的次数,每次迭代使用一行数据。 希望能对您有所帮助!如果您有任何其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值