loadrunner 手工參數拼接與l oadrunner的url編碼


Action()
{
    //演示需要的一些變量,提前聲明
    char *name = "yezi_zh";
    char *age = "30";
    char *work = "engin";
    char *cuntry = "中國";
    char my_param[1000];   // 數組的大小根據自己拼接的字符串長度來定義,否則會出現內存錯誤 
    /****************************
     *  需要的參數串為一下格式,這里只對漢字進行URL編碼,英文字符不轉為url編碼,
     * name=yezi&age=30&work=engin&china=%e4%b8%ad%e5%9b%bd
     * *************************/
     //漢字編碼轉換為url編碼     
     EncodePlainToURL(cuntry,cuntry_urlencode); 
    // 使用 srpintf 格式化需要傳遞的字符串
    sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry_urlencode); 
    //打印看看格式化的是否是需要的 
    lr_message(my_param);
    // 將已經存好變量的字符串轉換成loadrunner使用的參數
    lr_save_string(my_param,"loadrunner_param");
    //調用參數,和普通參數使用沒區別
    web_url("function","url=http://ip:port/function?{loadrunner_param}",LAST);
    return 0;
    }
    
//定義一個轉換url字符的函數
    void EncodePlainToURL(char *input_param, const char * output_param)
{
    //將字符串編碼轉為UTF-8
    lr_convert_string_encoding(input_param, LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "strUTF8");
    //去掉C數組后面的null終止符
    lr_save_string(lr_eval_string("{strUTF8}"), output_param);
    //將UTF-8字符串URL encode
    web_convert_param(output_param, "SourceEncoding=PLAIN", "TargetEncoding=URL", LAST);
}


回放腳本

Virtual User Script started at : 2017/6/30 10:19:53
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 1362 (Feb  2 2014 23:20:03)  	[MsgId: MMSG-27143]
Run mode: HTML  	[MsgId: MMSG-26993]
Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg"  	[MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Maximum number of concurrent connections per server: 2  	[MsgId: MMSG-26000]
Starting action Action.
Action.c(34): Notify: Saving Parameter "strUTF8 = 涓浗\x00".
Action.c(36): Notify: Parameter Substitution: parameter "strUTF8" =  "涓浗\x00"
Action.c(36): Notify: Saving Parameter "cuntry_urlencode = 涓浗".
Action.c(38): web_convert_param started  	[MsgId: MMSG-26355]
Action.c(38): Notify: Saving Parameter "cuntry_urlencode = %E4%B8%AD%E5%9B%BD".
Action.c(38): web_convert_param was successful  	[MsgId: MMSG-26392]
Action.c(16): Notify: Parameter Substitution: parameter "cuntry_urlencode" =  "%E4%B8%AD%E5%9B%BD"
name=yezi_zh&age=30&work=engin&cuntry=1.559239E-2714B80X1.138D80P-767D1.293305E-2315BBD
Action.c(20): Notify: Saving Parameter "loadrunner_param = name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD".
The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
Action.c(26): Notify: Parameter Substitution: parameter "loadrunner_param" =  "name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD"
The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

 

注:本案例需要一些c語言基礎與loadrunner基礎。

如果需要所有的字符串轉化為url編碼,需要調整代碼的執行順序。

Action()
{
    //演示需要的一些變量,提前聲明
    char *name = "yezi_zh";
    char *age = "30";
    char *work = "engin";
    char *cuntry = "中國";
    char my_param[1000];   // 數組的大小根據自己拼接的字符串長度來定義,否則會出現內存錯誤 
    /****************************
     *  需要的參數串為一下格式
     *name%3dyezi_zh%26age%3d30%26work%3dengin%26cuntry%3d%e4%b8%ad%e5%9b%bd
     * *************************/
 
    // 使用 srpintf 格式化需要傳遞的字符串
    sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry);
    //打印看看格式化的是否是需要的 
    lr_message(my_param);
    
     //參數轉換為url編碼     
     EncodePlainToURL(my_param,"loadrunner_urlencode");

    //調用參數,和普通參數使用沒區別
    web_url("function","url=http://ip:port/function?{loadrunner_urlencode}",LAST);
    lr_message("The param is %s",my_param);
    lr_message("The param is %s",lr_eval_string("{loadrunner_urlencode}"));
    return 0;
    }


 回訪腳本

Virtual User Script started at : 2017/6/30 10:34:29
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 1362 (Feb  2 2014 23:20:03)      [MsgId: MMSG-27143]
Run mode: HTML      [MsgId: MMSG-26993]
Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg"      [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Maximum number of concurrent connections per server: 2      [MsgId: MMSG-26000]
Starting action Action.
name=yezi_zh&age=30&work=engin&cuntry=中國
Action.c(36): Notify: Saving Parameter "strUTF8 = name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00".
Action.c(38): Notify: Parameter Substitution: parameter "strUTF8" =  "name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00"
Action.c(38): Notify: Saving Parameter "loadrunner_urlencode = name=yezi_zh&age=30&work=engin&cuntry=涓浗".
Action.c(40): web_convert_param started      [MsgId: MMSG-26355]
Action.c(40): Notify: Saving Parameter "loadrunner_urlencode = name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD".
Action.c(40): web_convert_param was successful      [MsgId: MMSG-26392]
The param is name=yezi_zh&age=30&work=engin&cuntry=中國
Action.c(28): Notify: Parameter Substitution: parameter "loadrunner_urlencode" =  "name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD"
The param is name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

 

代碼只說明原理,具體使用根據數據來源來替換。
文中的變量在實際使用場景中多是關聯獲取的動態參數,結合參數的使用來使用本代碼.

本文沒寫結合實際場景的參數使用,具有一定項目經驗的學習者可以提升工具的使用熟練度。

建議:對於Loadrunner的使用,多使用F1查看幫助文檔;

規定:在loadrunner中使用 c語言的變量,一定要在函數一開始定義,否則會出錯(和內存有關的)。數組的定義需要根據實際情況來定義,c語言對內存的控制很嚴格,養成嚴謹的編碼習慣很重要。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM