jmeter中⼀个变量获取后对应多个值,然后在后⾯调⽤这个变量,同时遍历所有值的⽅法(fo。。。
例如,我有个变量member_id包含7个值,还有cc_file有5个值
我们有这样⼀个场景,7个学⽣访问这5个⽂件,且全部访问
1、提取7个学⽣id
访问http
提取id
其中match number为-1,是指提取所有的值,保存为变量member_id
2、获取5个file的id
提取所有id并保存成cc_file
然后⽤两个嵌套循环即可
⾸先使⽤for each循环控制器时,要弄清楚这⼏个选项的意思
输⼊变量前缀,就是调⽤的变量名——调⽤后jmeter 会填充后缀,例⼦中就是member_ids_1为什么是下划线后⾯跟着1,因为勾选了下⾯的框。。
Input Variable Prefix:输⼊变量前缀,本例中为:member_ids
Output variable name:输出变量名称,提供给其它控件引⽤
Start index for loop(exclusive):循环开始的索引(默认从0开始,如果填写是2,实际是从2+1个开始执⾏)
End index for loop(inclusive):循环结束的索引(默认从0开始,如果填写是2,实际是从2+1个开始执⾏)
Add”_”before number:输⼊变量名称中是否使⽤"_"进⾏间隔。
我把翻译当原创,实在是使⽤⼼得,贴出交流,与君共勉。
1、ForEach Controller(遍历循环控制器)
Name:遍历循环控制器,名称,随意;
Comments:注释;
Input variable prefix:⼊参前缀;
Start index for loop(exclusive):循环变量起点,为0(第⼀个元素在起始索引+1),所以是从1开始取值,如果,正则表达式没有提取到任何参数匹配,则不会运⾏任何样本sampler;
End index for loop(inclusive):循环变量终点,如果variable_matchNr=10,写10,取到第10个,写11,没有11,则不取,写9则只取到编号为9的那个参数,取值⼤于输出参数时,不会影响执⾏下⼀步操作;
Out variable name:输出变量名称,可以直接引⽤${variable name}
Add"_"before number?:变量前缀是否添加_作为分隔符;
举例(查询天⽓预报):场景使⽤,查询出某⼀个城市,有多个城市代码,然后查询出每个地区的天⽓情况,这时就需要遍历每⼀个城市代码;
正则表达式提取所有的citycode,
Template:模板,$1$ 对应⼀个(.+?)表达式,Match No.(0 for Random):匹配规则,-1所有,0随机,1第⼀个;
可以通过debug调试结果得知总数citycode_matchNr=20,
⼊参输⼊citycode_ ⾃带下划_分隔符,就不需要勾选Add“_”.。?,
开始数是从(0+1)开始,到20结束,那么取值citycode_1-20输出给Recitycode;${Recitycode}就会得到20条citycode数据进⾏遍历:
2、If Controller 如果控制器
Name:如果控制器,命名随意;、
Comments:注释
Condition(default Javascript):判断条件,默认javascript脚本,
Interpret Condition as Variable Expression?:
勾选,使⽤javascript脚本、函数表达式来设置条件,如${_javascript(8==8)},返回为true则执⾏;不勾,使⽤变量表达式来设置条件,如"${variable}"=="xxx"、${variable}==数字,返回true则执⾏;Evaluate for all children?:判断条件是否针对所有的⼦节点,默认不勾选。只在if⼊⼝判断⼀次;3、Loop Controller 循环控制器
Name:循环控制器名称,随意;
Comments:正则匹配公司名称
Loop Count:循环次数,输⼊多少次就做少次
Forever:勾选,则永远循环,
再解释⼀遍这个配置元件与循环控制器搭配使⽤:
Name:元件名称,随意,保持默认就好
Comments:
Configure the CSV data source:配置元件数据源
FileName:名称,绝对路径;如C:\program file\index.csv,相对路径,⽂件放在脚本同⼀路径
File encoding:⽂件编码,如果参数⽂件有中⽂保存⼜不是utf-8,此处填gbk,如果参数⽂件保存为utf-8编码,默认为空或utf-8
Variable names (comma-delimited):参数⽂件有多少列,就给多少变量名称⼀⼀对应即可
Ignore first line(only used if variable names is not empty):默认false,选择true,不读⽂件第⼀⾏;
Delimiter(use '\t' for tab):分隔符,默认英⽂逗号,
Allow quotel data?:是否允许引⽤数据,未解其意,如果参数是引⽤参数“3,2,2”,就取引号的值;
Recycle on EOF?:到了⽂件尾是否循环,True—继续从⽂件第⼀⾏开始读取,False—不再循环,当False读完即⽌,stop thrad on EOF?为false,如果线程数⼤于参数⾏数4>3,则取到第3⾏,线程停⽌,不会执⾏下⼀个请求;
Stop thread on EOF?:到了⽂件尾是否停⽌线程,True—停⽌线程,False—不停⽌,注:当Recycle on EOF设置为True时,此项设置⽆效。Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地⽅和
[url=]LoadRunner[/url]中的迭代取之相反,经试验得出来的结果是:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论