在做loadrunner性能腳本開發時,常常碰見一個需求:符合web_reg_save_param函數中定義的左右邊界值的值有多個,而我們的常規寫法默認返回的是符合條件的第一個,而有時我們卻需要使用后面的值,下面來進行介紹,如何獲取多個,並且如何使用這些獲取到的值。
首先介紹一般我們經常使用的寫法:
web_reg_save_param("paramName",
"LB=左邊界",
"RB=右邊界",
LAST);
這種寫法保存到paramName中的值為返回符合條件的第一個值。
那么如果我們要獲取到所有符合條件的值,就應該在條件中加入ORD=ALL這樣的一個請求參數。寫法如下:
web_reg_save_param("paramName",
"LB=左邊界",
"RB=右邊界",
"ORD=ALL",//來指定獲取所有符合條件的值。
"Savelen=50",//這個參數用來限制獲取字符的長度。這個部分可以不加。
//如果加了,那么就不進行捕捉檢查了,所以會導致長度寫少了就會進行截取,有可能導致數據丟失。
LAST);
如果我們有4個符合條件的值,那么程序運行后,在log中打印出來的結果是:
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}"));
接下來,我們可以進行循環取出所有:
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的值就是被關聯后要取出來的值
//值已經取到,你想要做啥,在這里就可以隨便做啦!!這里打印一下!
lr_message("%s", markValue);
}
值已經在markValue中了,怎么玩就隨你啦!!!
