【P5】JMeter CSV Data Set Config(CSV 数据文件设置)

文章目录

    • 一、CSV Data Set Config(CSV 数据文件设置)参数说明
    • 二、测试计划演示
    • 三、测试计划设计
      • 3.1、忽略首行:True
      • 3.2、是否允许带引号?:False
      • 3.3、遇到文件结束符再次循环?:False
      • 3.4、遇到文件结束符停止线程?:True
      • 3.5、线程共享模式:当前线程
      • 3.6、线程共享模式:当前线程组


一、CSV Data Set Config(CSV 数据文件设置)参数说明

CSV 数据文件变量是指从外部 csv 文件读取数据出来作为变量

选择请求 >>> 添加 >>> 配置元件 >>> CSV 数据文件设置

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第1张图片

设置 CSV 数据文件(Configure the CSV Data Source)

(1)、文件名(Filename):csv 文件路径,可以是绝对路径或者相对路径

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

(2)、文件编码(File encoding):编码格式,与所选文件编码格式保持一致

(3)、变量名称(西文逗号间隔)(Variable Names (comma-delimited)):如果文件中只有一个变量,直接写变量名,如果有多个变量,用英语的逗号隔开。例:var1,var2

(4)、忽略首行(只在设置了变量名称后才生效)(Ignore first line (only used if Variable Names is not empty)):

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

  • False:一般设置为 False,文件从第一行开始设置变量数据,在变量名称中设置名称

(5)、分隔符(用 ‘\t’ 代替制表符)( Delimiter (use ‘\t’ for tab)):根据文件中的分隔符进行填写,默认:,

(6)、是否允许带引号?(Allow quoted data?):

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

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

(7)、遇到文件结束符再次循环?(Recycle on EOF?):

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

  • False:参数文件不再循环遍历取值

(8)、遇到文件结束符停止线程(Stop thread on EOF?):

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

  • False:不停止

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

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

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

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

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

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

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

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

二、测试计划演示

(1)、编写一个文件名为 data.csv 的文件,并添加数据

在这里插入图片描述

(2)、测试计划右键 <<< 添加 <<< 配置元件 <<< CSV Data Set Config(CSV 数据文件设置)

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第2张图片

  • 文件名:文件所在路径

  • 文件编码:中文使用 utf-8

  • 变量名称:var1,var2

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

(3)、测试计划右键 <<< 添加 <<< 线程(用户) <<< 线程组

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第3张图片

  • 线程数:3

(4)、线程组右键 <<< 添加 <<< 取样器 <<< JSR223 Sampler

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第4张图片

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

(5)、设置日志级别为 WARN,打开日志,点击启动

选项 <<< 日志级别 <<< WARN

选项 <<< 日志查看

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第5张图片

  • 可以看到3个线程各取了一组变量

三、测试计划设计

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

3.1、忽略首行:True

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

在这里插入图片描述

(2)、修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第6张图片

  • 删掉变量名称

  • 忽略首行选择 True

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

修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第7张图片

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

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

(1)、修改线程组

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第8张图片

  • 将线程数改为 4

(2)、修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第9张图片

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

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

修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第10张图片

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

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

(1)、修改线程组

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第11张图片

  • 每个线程循环执行2次

(2)、修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第12张图片

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

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

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

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

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第13张图片

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

(3)、修改 CSV Data Set Config(CSV 数据文件设置),清除日志并启动

【P5】JMeter CSV Data Set Config(CSV 数据文件设置)_第14张图片

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

你可能感兴趣的:(Jmeter,jmeter)