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