在做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中了,怎么玩就隨你啦!!!