功能描述

CSV Data Set Config配置原件主要功能是数据配置。把文件中的内容,通过变量获取到,不仅支持csv格式、txt格式也支持。

配置界面

CSV Data Set Config配置原件剖析_数据

  • **名称:**给配置原件重命名,便于识别该配置原件,该项不能为空
  • 注释:主要来对该配置原价进行解释说明,该项可以为空
  • Filename:这里用来设置数据文件,文件格式通常以csv,txt为主。该位置可以填写相对路径、绝对路径。该项为必填项
  • File encoding:设置文件编码格式。可以选择“UTF-8、UTF-16、ISO-8859-15、US-ASCII、编辑”,编辑选项可以填写其他编码,more选项为“编辑”。选择合适的编码,在请求响应或者参数过程,能避免乱码。后续会给出该部分的示例。
  • Variable Names(comma-delimited):设置变量,变量与变量之间用“,”分隔。该项为必填项
  • Ignore first line(only used if Variable Names is not empty):是否忽略第一行。默认值为False。如果数据文件第一行不是数据,而是对应的列名,该选项可以改为True。从有效测试数据开始,即第二行。
  • Delimiter(use ‘\t’ for tab):数据内容分隔符,默认是“,”号。举例,文件内容为如下:
a,b,c,d
1,2,3,4

上述内容分隔符使用“,”。

a@b@4

上述内容分隔符使用“@”。

分隔符没有特定要求,可以依据文件内容的数据样式,选择合适的分隔符划分。选择的分隔符会影响变量的值如:文件内容为“a@b@4”,变量名设置的为:a1,a2,a3。分隔符设置为“,”。那么变量a1=a@b@4,a2、a 3值为空。

  • Allow quote data?允许引用数据。默认为False。存在三个选项 “False、True、编辑”,编辑选项可以添加应用的变量。
  • **Recycle on EOF?:**文件结束是否循环获取数据。默认为True。如果文件中数据只有一行,循环了十次,如果不设置该值,只有第一次循环获取到数据。
  • **Stop the thread on EOF?:**文件结束是否停止线程。默认为False。当文件结束的时候,如果该值设置为True,线程也会停止。
  • Sharing Mode:共享模式,默认为All threads。存在选项“All threads、Current thread group、Current thead、编辑”。模式决定了该配置文件变量作用的线程域。如果只对该线程组有效,选择选项Current thread group。

使用演示

一列数据一个变量

文件内容csv_03.txt
你好
22
23
CSV Data Set Config配置

CSV Data Set Config配置原件剖析_CSV Data Set Config_02
由于数据文件中存在“你好”,为防止输出乱码,这里设置File encoding编码格式为“UTF-8”

脚本样式

CSV Data Set Config配置原件剖析_数据_03

这里设置的循环次数大于文件中内容行数为了校验Recycle on EOF?选项

脚本运行结果查看

CSV Data Set Config配置原件剖析_分隔符_04
CSV Data Set Config配置原件剖析_分隔符_05
CSV Data Set Config配置原件剖析_分隔符_06

编码正常不出现乱码,文件循环结束,从头开始第二轮循环。

多列数据多个变量

文件内容csv_03.txt
你好@25@999
22@26@888
23@27@777
CSV Data Set Config配置

CSV Data Set Config配置原件剖析_线程组_07

脚本样式

CSV Data Set Config配置原件剖析_数据_08

这里设置的循环次数大于文件中内容行数为了校验Recycle on EOF? 、Stop the thread on EOF?选项

脚本运行结果查看

CSV Data Set Config配置原件剖析_线程组_09
CSV Data Set Config配置原件剖析_分隔符_10
Recycle on EOF? 、Stop the thread on EOF?、File encoding选项设置生效。

作用域

脚本样式

CSV Data Set Config配置原件剖析_数据_11

脚本使用了三个CSV Data Set Config配置原件。csv_01和线程组同一层级、csv_02和循环控制器同一层级、csv_03和Debug Sampler同一层级。

基于上述样式,这三个配置原件的作用域为:

  • csv_01作用域为整个测试计划,包括测试计划中的各种元素。
  • csv_02作用域为当前线程组,包括线程组的各种元素。
  • csv_03作用域为当前循环控制器,控制器中的元素都可以使用该变量数据。

文件内容为:

csv_01.txt:

1
2
3
4
5

csv_02.txt:

11
12
13
14
15

csv_03.txt:

21
22
23
24
25

配置原件配置:

CSV Data Set Config配置原件剖析_分隔符_12

CSV Data Set Config配置原件剖析_线程组_13
CSV Data Set Config配置原件剖析_CSV Data Set Config_14

设置循环

设置循环控制器次数为5

线程组属性循环次数,线程组数设置:

CSV Data Set Config配置原件剖析_线程组_15

循环控制器设置为:5

CSV Data Set Config配置原件剖析_线程组_16

运行结果如下,只有csv03变量值变化:
CSV Data Set Config配置原件剖析_CSV Data Set Config_17
CSV Data Set Config配置原件剖析_线程组_18

线程组循环次数为3

线程组属性循环次数,线程组数设置:
CSV Data Set Config配置原件剖析_jmeter_19
循环控制器设置为:1

CSV Data Set Config配置原件剖析_线程组_20

运行结果如下,三个变量值变化:

CSV Data Set Config配置原件剖析_jmeter_21
CSV Data Set Config配置原件剖析_线程组_22

作用域总结

以上述脚本组织样式,变量变化归纳:

  • 当循环控制器设置为1时,调整线程组数、线程组循环次数,三个变量都会发生变化。循环次数=线程组数*线程组循环次数。循环从数据文件中获取数据。
  • 当线程组数、循环次数为1时,只有csv03变量值发生变化,也就是循环控制器中的配置原件数据会循环获取。
  • 当三者循环次数都发生变化时。举例:线程组数为2、线程组循环次数为2、循环控制器为2:类别与下属代码:
for a in range(2): #线程组数为2、线程组循环次数为2
for c in rang(2) #循环控制器为2

类别与两个for循环。循环次数=线程组数线程组循环次数循环控制器。实例结果截图如下:

CSV Data Set Config配置原件剖析_数据_23

CSV Data Set Config配置原件剖析_分隔符_24

CSV Data Set Config配置原件剖析_CSV Data Set Config_25

CSV Data Set Config配置原件剖析_线程组_26
CSV Data Set Config配置原件剖析_线程组_27
CSV Data Set Config配置原件剖析_分隔符_28