在做loadrunner性能脚本开发时,常常碰见一个需求:符合web_reg_save_param函数中定义的左右边界值的值有多个,而我们的常规写法默认返回的是符合条件的第一个,而有时我们却需要使用后面的值,下面来进行介绍,如何获取多个,并且如何使用这些获取到的值。
首先介绍一般我们经常使用的写法:
1
2
3
4
5
6
7
|
web_reg_save_param(
"paramName"
,
"LB=左边界"
,
"RB=右边界"
,
LAST);
|
这种写法保存到paramName中的值为返回符合条件的第一个值。
那么如果我们要获取到所有符合条件的值,就应该在条件中加入ORD=ALL这样的一个请求参数。写法如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
web_reg_save_param(
"paramName"
,
"LB=左边界"
,
"RB=右边界"
,
"ORD=ALL"
,
//来指定获取所有符合条件的值。
"Savelen=50"
,
//这个参数用来限制获取字符的长度。这个部分可以不加。
//如果加了,那么就不进行捕捉检查了,所以会导致长度写少了就会进行截取,有可能导致数据丢失。
LAST);
|
如果我们有4个符合条件的值,那么程序运行后,在log中打印出来的结果是:
1
2
3
4
5
6
7
8
9
|
Notify: Saving Parameter
"paramName_1 = aaa"
Notify: Saving Parameter
"paramName_2 = bbb"
Notify: Saving Parameter
"paramName_3 = ccc"
Notify: Saving Parameter
"paramName_4 = ddd"
Notify: Saving Parameter
"paramName_count = 4"
|
那么我们如果拿到这些值并且使用它们呢,其实很简单,具体实现如下:
由于我们已经知道了参数的名称,那么可以先简单打印一下验证是否正确:
lr_output_message("%s",lr_eval_string("{paramName_2}"));
接下来,我们可以进行循环取出所有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
int
mark=1;
//数组角标标记。
char
markVar[10];
//拼接数组变量key值
char
markValue[10];
//存储数据变量key
//关联函数
web_reg_save_param(
"paramName"
,
"LB=左边界"
,
"RB=右边界"
,
"ORD=ALL"
,
//来指定获取所有符合条件的值。
LAST);
//这里是你的请求函数
web_submit_data
//循环取出所有值
for
(;mark<=
atoi
(lr_eval_string(
"{paramName_count}"
));mark++){
sprintf
(markVar,
"{paramName_%d}"
,mark);
//将mark变量拼接到markVar中,
sprintf
(markValue,
"Value=%s"
, lr_eval_string(markVar));
//取出markVar中的值,存储到markValue中,计算后markValue的值就是被关联后要取出来的值<br>
//值已经取到,你想要做啥,在这里就可以随便做啦!!这里打印一下!
lr_message(
"%s"
, markValue);
}
|
值已经在markValue中了,怎么玩就随你啦!!!