关于CSV Data Set Config
它允许你从CSV、TXT文件中读取数据,在测试计划的运行过程中将这些数据作为变量使用。这在进行性能测试时非常有用,尤其是当你需要模拟大量用户使用不同的输入数据时。
通过
右键-添加-配置元件-CSV Data Set Config
添加,可以添加在
测试计划、线程组、取样器
下,作用域也随之变化。
参数包括:
是否允许带引号?
遇到文件结束符再次循环
遇到文件结束符停止线程
线程共享模式
这些编码系统各有特点,适用于不同的语言和场景。随着全球化的发展,UTF-8因其兼容性和效率成为了最广泛使用的编码方式。
推荐使用UTF-8编码,因为它可以表示任何语言的字符,并且是Web标准。几乎所有的现代文本编辑器、浏览器和编程语言都支持UTF-8。如遇到一些UTF-8无法兼容的语言,可以选择或编辑添加其他编码。
变量名称
数据文件中,1列对应1个变量,从左依次对应。变量名称不应多于列数。每次读取1行。以TXT文件为例:
111,222,333,444,555,666,777
aaa,bbb,ccc,ddd,eee,fff,ggg
数据文件中有5列,代表有7个变量。
变量名称可以输入
a1,a2,a3,a4,a5,a6,a7
,
a1
获取第1列数据,
a7
获取第7列数据。
a1
第1次获取
111
,
a1
第2次获取
aaa
。
忽略首行
如果数据文件的第一行包含列标题,可以使用此选项跳过第一行,只读取数据。以csv文件为例:
第1行只是标题,实际上并不需要标题数据。这种情况下可以选择
True
,不获取第1行。
分隔符
不建议更改,使用
,(英文符)
即可。
TXT文件中列于列之间要用
,
分隔。
是否允许带引号
以TXT文件为例:
"444"
选择
True
,引用变量时,获取的值会是
444
。
选择
False
,引用变量时,获取的值会是
"444"
。
遇到文件结束符再次循环
文件结束符(End Of File,简称EOF)是一个用于表示文件内容结束的信号,在txt、csv等文件的未尾以
<EOF>
结束。当程序读取文件时,以
<EOF>
来确定是否已经到达文件的末尾。
当读取到文件的结束符,线程或循环还没结束时。选择
True
,接下来的线程或循环会继续从文件的首行开始(可能忽略首行)。选择
False
,接下来的线程或循环会一直获取文件的结束符
<EOF>
。
遇到文件结束符停止线程
当读取到文件的结束符,线程或循环还没结束时。选择
True
,接下来的线程或循环不会再继续。选择
False
,不会影响到线程或循环的继续。
线程共享模式
其提供了多种模式来指定如何使用数据文件,模式共有:
当前线程组
我们可以使用txt文件作为数据文件,文件内容如下:
111,222,333,444
aaa,bbb,ccc,ddd
888,999,1010,2020
fff,iii,jjj,kkk
6060,7070,8080,9090
000,ppp,qqq,rrr
所有线程
默认的共享模式,所有线程共享同一个CSV文件,所有线程将按照执行顺序依次读取CSV文件中每一行的数据(一个线程一行数据),直到文件结束。
示例Jmeter脚本
测试计划下添加查看结果树、CSV 数据文件设置、线程组1、线程组2
CSV 数据文件设置中配置参数
文件名:
txt文件的路径
文件编码:
UTF-8
变量名称:
a,b,c,d
线程共享模式:
所有线程
线程组1下添加HTTP请求-1、HTTP请求-2
线程组2下添加HTTP请求-3、HTTP请求-4
所有取样器的请求地址:
HTTP://127.0.0.1:5000/GetList/
所有取样器的请求方式:
GET
HTTP请求-1中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
HTTP请求-2中添加参数。名称1:
c
值1:
${c}
;名称2:
d
,值2:
${d}
HTTP请求-3中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
HTTP请求-4中添加参数。名称1:
c
值1:
${c}
;名称2:
d
,值2:
${d}
线程:
线程组1 1-1
的执行时间比线程:
线程组2 2-1
早,所以线程:
线程组1 1-1
会获取txt文件第一行的数据,即
HTTP请求-1获取111、222;HTTP请求-2获取333、444
。
则
HTTP请求-3获取aaa、bbb;HTTP请求-4获取ccc、ddd
,获取第二行数据。
若这两个线程组分别有多个线程,而且文件中的数据足够多,所有的线程按照执行顺序依次获取每行数据。
当前线程组
该模式下,只有同一个线程组内的线程会共享CSV文件。比如数据文件有10行数据,并且有10个线程在同一个线程组中,每个线程将分别读取一行数据。不同的线程组分别独立从
CSV Data Set Config
获取数据。
示例Jmeter脚本
测试计划下添加查看结果树、CSV 数据文件设置、线程组1、线程组2
CSV 数据文件设置中配置参数
文件名:
txt文件的路径
文件编码:
UTF-8
变量名称:
a,b,c,d
线程共享模式:
所有线程
线程组1、线程组2的线程数配置为:
2
线程组1下添加HTTP请求-1、HTTP请求-2
线程组2下添加HTTP请求-3、HTTP请求-4
所有取样器的请求地址:
HTTP://127.0.0.1:5000/GetList/
所有取样器的请求方式:
GET
HTTP请求-1中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
HTTP请求-2中添加参数。名称1:
c
值1:
${c}
;名称2:
d
,值2:
${d}
HTTP请求-3中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
HTTP请求-4中添加参数。名称1:
c
值1:
${c}
;名称2:
d
,值2:
${d}
同线程组的两个线程,分别获取文件中第一行、第二行的数据。线程:
线程组1 1-1
获取第一行数据,线程:
线程组1 1-2
获取第二行数据。
不同线程组之间互相独立。线程:
线程组1 1-1
获取第一行数据,线程:
线程组2 2-1
都获取第一行数据。
当前线程
该模式下,各个线程相互独立,分别独立从
CSV Data Set Config
获取数据。
示例Jmeter脚本
测试计划下添加查看结果树、CSV 数据文件设置、线程组1、线程组2
CSV 数据文件设置中配置参数
文件名:
txt文件的路径
文件编码:
UTF-8
变量名称:
a,b,c,d
线程共享模式:
当前线程
线程组1、线程组2的线程数配置为:
2
线程组1下添加HTTP请求-1
线程组2下添加HTTP请求-2
所有取样器的请求地址:
HTTP://127.0.0.1:5000/GetList/
所有取样器的请求方式:
GET
HTTP请求-1中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
HTTP请求-2中添加参数。名称1:
a
值1:
${a}
;名称2:
b
,值2:
${b}
另外在使用
CSV Data Set Config
时,还需注意循环次数。
配置
所有线程
,如果有2个线程组、这两个线程组都是2个线程,线程组(A)有3次循环
执行时,首先两个线程组共四个线程获取文件的前四行数据,然后线程组(A)第二次循环获取第五、六行数据,线程组(A)第三次循环获取第七、八行数据后结束。
配置
当前线程组
,如果有2个线程组、这两个线程组都是2个线程,线程组(A)有3次循环
执行时,首先线程组相互独立,两个线程组的两个线程都从数据文件中获取前两行数据,然后线程组(A)第二次循环获取第三、四行数据,线程组(A)第三次循环获取第五、六行数据后结束。
配置
当前线程
,如果有2个线程组、这两个线程组都是2个线程,线程组(A)有3次循环
执行时,首先各个线程相互独立,两个线程组共四个线程都从数据文件中获取第一行数据,然后线程组(A)第二次循环的两个线程都获取第二行数据,线程组(A)第三次循环的两个线程都获取第三行数据。
其中
忽略首行、是否允许带引号、遇到文件结束符再次循环、遇到文件结束符停止线程、线程共享模式
的选项中还有
编辑
选项,因未使用过,我并不知怎样使用,读者们可以去探究一番。