jmeter(15)-参数化之csv文件设置

一. CSV数据文件设置

CSV数据集配置用于从文件中读取行,并将它们拆分为变量。它比CSVRead ()和_ StringFromFile ()函数更容易使用。
它非常适合处理大量变量,对于使用“随机”和唯一值进行测试也很有用。

默认情况下,文件只打开一次,每个线程将使用文件中的不同行。但是,行传递给线程的顺序取决于它们执行的顺序。

线程组->add Config Element (配置原件) --CSV data set config (CSV数据文件设置)

注意下作用域,放在测试计划下面代表与线程组是同等位置,将作用于所有的线程组。

 

官方推荐使用这种:因为不会消耗很多系统资源,很多数据csv文件,保存在本地,即存在磁盘中。

最后会拿到内存中,供jmeter程序使用,因为计算机当中任何程序的交互都是cpu和内存进行交互,不会是cpu和磁盘进行交互,

但是数据又是存在磁盘中,所以就会有个过程,cpu和内存交互的过程中发现,如果内存中有些数据没有,那么内存将会去从磁盘中加载数据取到放在内存中,

然后cpu继续和内存进行交互,cpu是不会直接和磁盘进行交互的。。如果从磁盘取的话,就会占用很多系统资源,内存资源,所以这个时候csv文件设置避免消耗太多内存资源这种情况。


CSV文件参数解析

1、文件名:指保存信息的文件目录,选择文件的路径(支持相对路径文件名也支持绝对路径(推荐使用)文件名。否则会在jmeter日志文件(jmeter.log目录位置D:\Program Files\apache-jmeter-2.13\bin)中提示:系统找不到指定文件,运行脚本后,登录失败。
对于分布式测试,CSV文件必须存储在分布式服务器主机系统上与JMeter服务器启动的正确相对目录中。
分布式测试,csv文件默认放在Linux-jmeter的bin目录下。

2、文件编码:保持默认,可不选。默认为ANSI ( ASCII码的拓展)

3、变量名称:后续我们引用csv文件的时候,所使用的名称。给CSV文件中各列起个名字(有多列时,用英文逗号隔开列名)

如下截图:3列起3个变量名字

4、忽略首行:如果csv文件中设置了参数化数据的名称,而不是要使用的数据,则可以选择忽略首行。

第一行数据有用,就不忽略

第一行数据没用,就忽略

5、分隔符:默认因为逗号, 即多列之间的分隔符 ;

csv文件中各列与各列之间的分隔符,比如逗号,   
 .csv文件的分隔符保持一致。如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t

6、是否允许带引号:默认false;

单引号不会忽略,只会忽略双引号,比如“name”  name 
自己调试一下,即只对双引号生效。

但是如果请求体是body-json格式,这个必须设置为true
{
  "name":"${name}",
  "pwd":"${pwd}"

}

7、遇到文件结束符是否再次循环:默认true,true继续从文件第一行开始读取,False表示不再循环。

设置为True—继续从文件第一行开始读取,设置为False—不再循环,会有EOF,空值。

举例:如果文件有10个数据,到最后一行后,下一行没有数据了,

选择true的话,就会从01再次开始循环;

选择false的话,就会停止循环,,但是线程数=11的话,数据只有10个,那么第11个数据取值为<EOF>

8、遇到文件结束符/文件尾是否停止线程:默认false,true是停止线程。false是不停止线程。

到了文件尾是否停止线程,True—停止线程,False—不停止,
注:当Recycle on EOF【遇到文件结束符再次循环】设置为True时,此项设置无效。 第11次不会运行

为什么无效?
因为当上面的Recycle on EOF设置为true,下面8也设置的true ,即代表7一直有值没有结束,会继续运行,所以值够的情况下,Stop thread on EOF? :true还是false都无所谓。

 

(1)
【遇到文件结束符再次循环】即第7项选择false的话,就会停止循环,就数据10就结束了,不会再循环取数据了。
----遇到文件结束符停止线程:默认false,选择true是停止。
比如线程数=20,但是数据只有10个,那么数据取完运行完10个线程数,第11个不再运行,即停止线程。

(2)
【遇到文件结束符再次循环】即第7项选择false的话,就会停止循环,就数据10就结束了,不会再循环取数据了。
----遇到文件结束符停止线程:默认false,选择false是不停止线程。
比如线程数=20,但是数据只有10个,那么数据取完运行完10个线程数,第11个仍运行,后面取值全部取的是<EOF>


9、线程共享模式:默认[所有线程] ,还有[当前线程组] [当前线程] 

参数化的取值取决于线程共享模式,默认所有线程,是个难点!!

小知识点:
如果文件是用的excel的话,那么保存文件另存为---文件类型选择.csv类型。
不要直接修改文件名

猜你喜欢

转载自www.cnblogs.com/yiyaxuan/p/12369009.html