大多數(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);