Loadrunner模擬JSON接口請求進行測試

一、loadrunner腳本創建

1.Insert - New step -選擇Custom Request - web_custom_request

2.填入相應參數

3.生成腳本,并修改如下(參數中的引號"前需要加斜杠\轉譯)

Action()

{

web_custom_request("web_custom_request",

"URL=http://urlhead/CpcService.ashx?Method=checkXXXed",

"Method=POST",

"Resource=0",

"RecContentType=application/json",

"Referer=",

"Mode=HTTP",

"EncType=application/json",

"Body={\"user\":{\"uid\":\"C8-9C-DC-70-BD-B2\"}}",

LAST);

return 0;

}

4.捕獲頁面返回值

返回格式{"IsError":0,"ErrorMsg":"","user_tags":["0"]}

將光標移動到腳本頂部,插入關聯點insert-new step-service-web_reg_save_param

在腳本頂部,插入并修改腳本如下

web_reg_save_param("user_tags",

"LB=user_tags\":[\"",

"RB=\"]}",

LAST);

在腳本尾部,加入輸出日志驗證是否獲取成功

lr_message ("user_tags:%s", lr_eval_string("{user_tags}"));

5.對我們的接口做自動化功能測試,寫驗證腳本如下:

if (atoi(lr_eval_string("{user_tags}"))==0)

lr_output_message("user_tags:%s,succeed!",(lr_eval_string("{user_tags}")));

else if(atoi(lr_eval_string("{user_tags}"))==1)

lr_output_message("user_tags:%s,failed!",(lr_eval_string("{user_tags}")));

else

lr_output_message("user_tags:%s,unknow!",(lr_eval_string("{user_tags}")));

6.參數化腳本

運行腳本,重要日志輸出如下:

Action.c(24): [C8-9C-DC-70-BD-B2]0,succeed!

Action.c(26): [C8-9C-DC-70-BD-B3]1,failed!

---------------------------------------END---------------------------------------

二、web_custom_request和web_submit_data區別

web_custom_request方法可以發送POST和GET類型的請求;

web_submit_data只能發送POST類型的請求;

所有web_submit_data方法發送的請求都可以使用web_custom_request來實現

web_custom_request可以實現web_submit_data無法實現的請求,比如“查詢所有郵件并刪除”這個案例中,查詢時我們使用關聯把所有郵件對應的標識抓取成一個數組,如果使用web_submit_data來完成這個刪除的請求,需要很多個web_submit_data請求才能完成,但使用web_custom_request就可以通過一個請求完成,方法是自己寫代碼拼一個web_custom_request 方法POST請求的Body值。

1. web_submit_data

請求中提交的數據格式:“Name=屬性名稱,”,“Value=屬性值”

例如:

"Name=username″,"Value=12044″, ENDITEM,

"Name=password″,"Value=123456″, ENDITEM,

"Name=typeId″,"Value=1″, ENDITEM,

如果想提交的某個屬性包含包含多個值(比如說批量刪除),單個web_submit_data就無法處理了,只能通過多個web_submit_data來處理。

2. web_custom_request

提交的數據(body)格式:“Body=屬性名稱=屬性值&屬性名稱=屬性值&……”

下面是一個典型的web_submit_data和web_custom_request請求,可以看到web_custom_request中提交的數據(body)是以這樣的方式存在的,如下:

web_submit_data("searchRecvOrgsname",

"Action=http://{url}/searchRecvOrgsname",

"Method=POST",

"TargetFrame=",

"RecContentType=text/html",

"Referer=http://{url}/login_wj;jsessionid={jsessionid}",

"Snapshot=t18.inf",

"Mode=HTML",

ITEMDATA,

"Name=orgsId", "Value={orgsId}", ENDITEM,

"Name=code", "Value={order_end_station_code}", ENDITEM,

LAST);

web_custom_request("searchVehiclePopUp",

"URL=http://{url}/searchVehiclePopUp",

"Method=POST",

"TargetFrame=",

"Resource=0",

"RecContentType=text/html",

"Referer=http://{url}/login_wanjia;jsessionid={jsessionid}",

"Snapshot=t19.inf",

"Mode=HTML",

"EncType=application/x-www-form-urlencoded; charset=UTF-8",

"Body=&orgsId={orgsId}&order_start_station_id={order_start_station_id}&targetcode=order_truck_no&targetname=order_truck_name&targetid=order_truck_id",

LAST);

兩種情況下的POST請求會被LoadRunner錄制為web_custom_request:

1.上文提到的批量提交多條同屬性名稱的數據的請求

2.header屬性x-requested-by值為XMLHttpRequest的POST請求

這兩種實現請求的方法還有一個需要注意的地方就是web_custom_request中body中的屬性值如果包含一些特殊字符,必須通過URL編碼,否則Web服務器會返回500錯誤,一個典型的例子是如果Body中包含ViewState,ViewState中常常有“=”之類的特殊字符,此時必須通過URL編碼,LoadRuner中提供了一個這樣的編碼轉換函數:

web_convert_param(“vs1″, “SourceEncoding=HTML”,“TargetEncoding=URL”, LAST);

3. web_custom_request函數詳解

A.語法:

int web_custom_request( const char *RequestName, ,

[EXTRARES, ,] LAST );

B.返回值:返回LR_PASS(0)代表成功,LR_FAIL(1)代表失敗。

C.參數:

(1)RequestName:步驟的名稱,VuGen中樹形視圖中顯示的名稱。

(2)List of Attribute:屬性列表,支持的屬性有以下幾種:

a.URL:頁面地址。

b.Method:頁面的提交方式,POST或GET。

c.TargetFrame:當前鏈接或資源所在Frame的名稱。參見List of Attributes的同名參數。

除了Frame的名字,還可以指定下面的參數:

_BLANK:打開一個空窗口。

_PARENT:把最新更改過的的Frame替換為它的上級。

_SELF:替換最新更改過的的Frame。

_TOP:替換整個頁面。

d.EncType:編碼類型。

e. RecContentType:響應頭的內容類型。參見List of Attributes的同名參數。

f. Referer:參見List of Attributes的同名參數。

g. Body:請求體。參見List of Attributes的同名參數。

h. RAW BODY:參見List of Attributes的同名參數。

i. BodyFilePath:作為請求體傳送的文件的路徑。它不能與下面的屬性一起使用:Body,或者其他Body屬性或Raw Body屬性包括BodyBinary,BodyUnicode,RAW_BODY_START或Binary=1。

j. Resource、ResourceByteLimit、Snapshot、Mode:參見List of Attributes的同名參數。

k. ExtraResBaseDir:參見List of Attributes的同名參數。

l. UserAgent:用戶代理,它是一個HTTP頭的名字,用來標識應用程序,通常是瀏覽器,它呈現的是用戶和服務器的交互。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容