功能描述
CSV Data Set Config配置原件主要功能是数据配置。把文件中的内容,通过变量获取到,不仅支持csv格式、txt格式也支持。
配置界面
- **名称:**给配置原件重命名,便于识别该配置原件,该项不能为空
- 注释:主要来对该配置原价进行解释说明,该项可以为空
- 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配置
由于数据文件中存在“你好”,为防止输出乱码,这里设置File encoding编码格式为“UTF-8”。
脚本样式
这里设置的循环次数大于文件中内容行数。为了校验Recycle on EOF?选项。
脚本运行结果查看
编码正常不出现乱码,文件循环结束,从头开始第二轮循环。
多列数据多个变量
文件内容csv_03.txt
你好@25@999
22@26@888
23@27@777
CSV Data Set Config配置
脚本样式
这里设置的循环次数大于文件中内容行数。为了校验Recycle on EOF? 、Stop the thread on EOF?选项
脚本运行结果查看
Recycle on EOF? 、Stop the thread on EOF?、File encoding选项设置生效。
作用域
脚本样式
脚本使用了三个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
配置原件配置:
设置循环
设置循环控制器次数为5
线程组属性循环次数,线程组数设置:
循环控制器设置为:5
运行结果如下,只有csv03变量值变化:
线程组循环次数为3
线程组属性循环次数,线程组数设置:
循环控制器设置为:1
运行结果如下,三个变量值变化:
作用域总结
以上述脚本组织样式,变量变化归纳:
- 当循环控制器设置为1时,调整线程组数、线程组循环次数,三个变量都会发生变化。循环次数=线程组数*线程组循环次数。循环从数据文件中获取数据。
- 当线程组数、循环次数为1时,只有csv03变量值发生变化,也就是循环控制器中的配置原件数据会循环获取。
- 当三者循环次数都发生变化时。举例:线程组数为2、线程组循环次数为2、循环控制器为2:类别与下属代码:
for a in range(2): #线程组数为2、线程组循环次数为2
for c in rang(2) #循环控制器为2
类别与两个for循环。循环次数=线程组数线程组循环次数循环控制器。实例结果截图如下: