使用LR編寫HTTP協議Json報文格式接口腳本實戰


最近在做HTTP協議接口壓測時,遇到一些編寫腳本方面的問題,在這里總結記錄下,以便以后溫習,也希望能幫助到和我有同樣困惑的朋友吧。

//實戰代碼如下所示:
Action() { lr_start_transaction(
"事物"); // 斷言內容:processcode":"0000","processdes:"處理成功" web_reg_save_param("processcode", "NotFound=warning", "LB=processcode\":\"", "RB=\",\"processdes", "Ord=1", "Search=Body", LAST); web_reg_save_param("processdes", "NotFound=warning", "LB=processdes\":\"", "RB=\",\"checkresult", "Ord=1", "Search=Body", LAST); //接口1:發送指定key:value參數的json報文 web_submit_data("request", "Action=http://IP:port/sss/idCardCheck11", "Method=POST", "Mode=HTTP", "RecContentType=application/json", ITEMDATA, "Name=msgbody", "Value={\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\"," "\"note\":\"\",\"brnchcd\":\"4001\",\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\"," "\"idcardno\":\"139891119211X\",\"name\":\"user\",\"wthrespic\":\"1\",\"app_id\":null," "\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}", ENDITEM, LAST); //接口2:發送json格式報文 web_custom_request("request", "Url=http://IP:port/sss/idCardCheck11", "Method=POST", "Mode=HTTP", "EncType=application/json", "RecContentType=application/json", "Body={\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\"," "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":" "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}", LAST);
//響應報文key值和預期結果比較,如果等於0則請求處理成功
if(strcmp(lr_eval_string("{processcode}"),"0000") == 0){ lr_end_transaction("事物", LR_PASS); }else{ lr_end_transaction("事物", LR_FAIL); //事物失敗后打印processdes字段的值,也就是錯誤信息,但是LR打印出來的中文出現亂碼,所以這里做了轉碼的操作 lr_convert_string_encoding(lr_eval_string("{processdes}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"resultMsg"); //解碼后返回單筆核對請求處理成功 lr_error_message("錯誤信息:%s",lr_eval_string("{resultMsg}")); } // lr_end_transaction("事物",LR_AUTO); return 0; }

以下是web_submit_data()函數 API示例代碼:

從示例可以看到發送的是name,value對,提交表單的形式,但實際Value值也可能存在json數組,xml等形式。

  // web_submit_data() API示例
  web_submit_data("default.aspx",
                "Action=http://lazarus/flightnet/default.aspx",
                "Method=POST",
                "TargetFrame=",
                "RecContentType=text/html",
                "Referer=http://lazarus/flightnet/",
                "Snapshot=t7.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=grpType", "Value=radRoundtrip", ENDITEM,
                "Name=lstDepartingCity", "Value=DEN", ENDITEM,
                "Name=lstDestinationCity", "Value=LAX", ENDITEM,
                "Name=btnAvailableFlights", "Value=Next >", ENDITEM,
            LAST );

接口請求報文如下:

msgbody:{app_sign:287cca63e9316c031,businesscode:05,note:,brnchcd:4001,b64pic:,inputtype:11,teller:2666,idcardno:139891119211X,name:user,wthrespic:1,app_id:null,bankcode:31100396,timestamp:1536118078193}

問題描述:

往常使用LR編寫處理HTTP接口腳本,慣用的函數是web自定義請求函數 web_custom_request(),使用接口測試工具postman請求成功后就直接編寫腳本,嘗試了幾種組body的方法均返回請求方法格式出錯或者直接請求失敗,嘗試請求方法如下所示:

  web_custom_request("request",
                  "Url=http://10.148.0.161:1111/check/idCardCheck",
                  "Method=POST",
                  "Mode=HTTP",
                  "EncType=application/json",
                  "RecContentType=application/json",
                  "Body={msgbody:{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\"," 
                  "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":" 
                  "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}}",
                   LAST);
      
      web_custom_request("request",
                  "Url=http://10.148.0.161:1111/check/idCardCheck",
                  "Method=POST",
                  "Mode=HTTP",
                  "EncType=application/json",
                  "RecContentType=application/json",
                  "Body={\"msgbody\":{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\"," 
                  "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":" 
                  "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}}",
                   LAST);
      
       web_custom_request("request",
                  "Url=http://10.148.0.161:1111/check/idCardCheck",
                  "Method=POST",
                  "Mode=HTTP",
                  "EncType=application/json",
                  "RecContentType=application/json",
                  "Body=msgbody:{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\"," 
                  "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":" 
                  "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}",
                   LAST);

結論:如果提供的報文是key:value格式的就使用web_submit_data()函數,反之可選擇使用web_custom_request()函數,如以上內容表述或總結后期會不斷完善。

 


免責聲明!

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



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