大多數(shù)情況下,在LoadRunner的腳本中設(shè)置參數(shù)還是比較簡單的,但是正所謂人在江湖飄,哪能不挨刀?有的時候我們也會遇到一些特殊的情況,對腳本中的參數(shù)需要做一些特殊的處理。比如我最近在幾個項目的性能測試腳本編寫過程中,就遇到了這種情況。
第一個項目其實是我同事遇到的。他們的系統(tǒng)報文中有一個參數(shù)的限制條件:要求必須是數(shù)字型,且長度為9位,如果不足9位,需要在后面補(bǔ)齊空格,而且還需要保證參數(shù)值唯一。我們暫且不去追究為啥這個系統(tǒng)會設(shè)置這么坑爹的一個限制,在這里的重點是說明在這樣的情況下,我們該如何去設(shè)置參數(shù)?由于這個系統(tǒng)要求參數(shù)值唯一,所以我首先想到的還是利用LoadRunner的參數(shù)類型去控制,因為只有這樣才能在并發(fā)的情況下,保證參數(shù)值的唯一性。
總體思路攏共分三步:1、設(shè)置一個類型為unique number的參數(shù)類型,轉(zhuǎn)換為字符型;2、根據(jù)字符串的長度,補(bǔ)齊空格為9位;3、將字符串轉(zhuǎn)換為參數(shù)并替換
具體的代碼如下:
char str[10];
int len;
int num;
int i;
//獲取參數(shù)的長度
len=strlen(lr_eval_string("{old_param}"));
num=9-len;
strcpy(str,lr_eval_string("{old_param}"));
for(i=1;i<=num;i++)
{
//在字符串后面加上空格
strcat(str," ");
}
//轉(zhuǎn)換為參數(shù)
lr_param_sprintf("new_param",str);
第二個項目的情況相對比較好理解一些。要測試的是一個批量提交的業(yè)務(wù),用戶在頁面上選擇10筆數(shù)據(jù)后,作為一個批次一起提交。需要參數(shù)化的參數(shù)有兩個:客戶編號(custid)和業(yè)務(wù)編號(loanid),需要從參數(shù)文件中每次取10個參數(shù)。并拼接成需要的報文格式,以逗號分隔開。做法與上一個項目大同小異,只不過這里的參數(shù)類型要設(shè)置成file型。需要注意的是,由于參數(shù)文件中的custid和loanid是一行一筆數(shù)據(jù),而我們每次需要使用的是10筆數(shù)據(jù),因此在update values那里需要設(shè)置成每次出現(xiàn)時更新參數(shù)值。
代碼示例如下:
//獲取批次的custid和loanid,每批次取10筆數(shù)據(jù)
for (i=1;i<=9;i++)
{
strcpy(scustid,lr_eval_string("{custid}"));
strcat(bat_custid,scustid);
//custid間用“,”分隔
strcat(bat_custid,",");
strcpy(sloanid,lr_eval_string("{loanid}"));
strcat(bat_loanid,sloanid);
//loanid間用“,”分隔
strcat(bat_loanid,",");
}
strcat(bat_custid,lr_eval_string("{custid}"));
strcat(bat_loanid,lr_eval_string("{loanid}"));
//轉(zhuǎn)換成LR的參數(shù)
lr_param_sprintf("p_custid",bat_custid);
lr_param_sprintf("p_loanid",bat_loanid);