赞
踩
参数化配置元件(以下简称CSV)能够在文件中读取一行数据,根据特定的符号切割成一个或多个变量放入内存中。相比于JMeter函数助手中提供的 __CSVRead()、__StringFromFile()函数,CSV使用更加简便。而且,CSV非常适合处理大量的数据,也适用于生成“随机值”、“唯一值”这张的变量。
JMeter支持数据被双引号括起,被双引号括起的数据允许包含分隔符,例如:a,b,"c,d"
这行数据被逗号分隔后将产生三个变量值,a、b、c,d
JMeter支持读取具有标题行(标题行的内容是列名称)的CSV文件,要启用此功能,要将【Variable Names】留空,并且提供正确的分隔符。
参数详解:
参 数 | 描 述 | 必 须 |
---|---|---|
Name | 脚本中显示的这个元件的描述性名称 | 是 |
Filename | 待读取文件的名称。可以写入绝对路径,也可以写入相对路径(相对于bin目录),如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件 | 是 |
File Encoding | 文件读取时的编码格式,不填则使用操作系统的编码格式 | 否 |
Ignore first line | 是否忽略首行,如果csv文件中没有表头,则选择false | 是 |
Variable Names | 变量名列表,多个变量名之间必须用分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名列表 | 否 |
Delimiter | 参数分隔符,将一行数据分隔成多个变量,默认为逗号,也可以使用“\t”。如果一行数据分隔后的值比Vairable Names中定义的变量少,这些变量将保留以前的值(如果有值的话) | 是 |
Allow quoted data? | 是否允许变量使用双引号,允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符 | 否 |
Recycle on EOF? | 是否循环读取csv文件内容,默认为 true | 是 |
Stop thread on EOF? | 是否循环读取csv文件内容,默认为 true | 是 |
Recycle on EOF? | 当Recycle on EOF为False时,停止线程,当Recycle on EOF为True时,此项无意义,默认为 false | 是 |
Sharing mode | 1、All threads(默认):一个线程组内,各个线程(用户)唯一顺序取值;2、current thread:一个线程组内,各个线程(用户)各自顺序取值;3、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值; | 是 |
示例,注意【Sharing mode】为All threads:
file.txt中内容:
添加【Debug Sampler】后,设置线程组线程数为2,循环次数为2,运行脚本
查看结果树,4次运行结果依次是:
var1=a1 var2=b1 var3=c1
var1=a2 var2=b2 var3=c2
var1=a3 var2=b3 var3=c3
var1=a1 var2=b1 var3=c1
修改【Sharing mode】为【Current thread group】后,运行结果不变,改为【Current thread】,结果变为:
var1=a1 var2=b1 var3=c1
var1=a2 var2=b2 var3=c2
var1=a1 var2=b1 var3=c1
var1=a2 var2=b2 var3=c2
以上结果说明,前两种模式下,多个线程会互相影响,线程1读取第一行数据后,线程2就会读取第二行,线程1再次读取时会读取第三行,以此类推。第三种模式下,各个线程互不影响,只按自身的顺序去读取文件,例如线程1读取第一行后,下次会读取第二行,线程2也是如此。
cookie管理器有两个功能:
cookie管理器参数详解:
名称 | 描述 | 必须 |
---|---|---|
Name | 脚本中显示的这个元件的描述性名称 | 否 |
Clear Cookies each Iteration | 勾选此项后,每次执行主线程组循环时,都会清除所有服务器定义的cookie。在GUI中定义的任何cookie都不会被清除。 | 否 |
Cookie Policy | cookie管理策略。“standard”适用于大部分情况。“ignoreCookies”等同于忽略cookieManger | 是 |
User-Defined Cookies | 使用自定义的cookie | 否 |
HTTP请求默认值,这个元件可以设置HTTP请求控制器使用的默认值。例如,图中【服务器名称或IP】项目内填入了【example.com】,后面的HTTP请求如果IP也是example.com的话,那么只要将【服务器名称或IP】留空,那么这个字段将自动继承HTTP请求默认值中的值。其他诸如【协议】、【端口号】、【路径】等同此。
HTTP请求默认值可以极大地增强复用性,简化脚本编写。
信息头管理器,支持用户添加或者重写HTTP请求头。JMeter支持多个信息头管理器。多个信息头条目合并成一个信息头列表,跟随http请求一并提交到服务端。
经过实测,总结出规则如下:
计数器,可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。
计数器参数详解:
名称 | 描述 | 必须 |
---|---|---|
Name | 脚本中显示的这个元件的描述性名称 | 是 |
Starting value | 计数器的起始值,默认为0 | 否 |
Increment | 每次迭代计数器的增量,默认为0,表示无增量 | 否 |
Maximum value | 计数器最大值,到此值后将从起始值重新开始计数,默认为LONG.MAX_VALUE | 否 |
Number Format | 可选格式,例如000将格式化为001、002等。这将传递给decimalFormat,因此可以使用任何有效格式。如果在解释格式时出现问题,则忽略该格式。[默认格式是使用long.toString()生成的] | 否 |
Exported Variable Name | 引用名称,如果将它命名为count,后面可以用${count}引用它,不建议用空字符串,虽然空值也可以使用 | 否 |
Track Counter Independently for each User | 如果勾选此项,则计数器为全局计数器(即,用户1将获得值“1”,用户2将在第一次迭代时获得值“2”)。如果选中,则每个用户都有一个独立的计数器。 | 否 |
Reset counter on each Thread Group Iteration | 此选项仅在勾选【Track Counter Independently for each User】时可用,如果选中此选项,则计数器将重置为每个线程组迭代的起始值。当计数器在循环控制器中时,这可能很有用。 | 否 |
实际工作中,计数器一般和逻辑控制器配合使用,例如下面的脚本:
运行脚本,查看结果树。分析一下这个运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。