一、添加請求頭
存在一些接口,發送請求時需要進行權限驗證、登錄驗證(不加請求頭時運行腳本,接口可能會報401等等),所以需要在腳本中給對應請求添加請求頭。注意:請求頭需在請求前添加,包含url類、submit類請求。
char *a="038f4201048a6319b4d2f538b2dd54d8"; lr_save_string( a,"b" ); lr_output_message(lr_eval_string("{b}")); web_add_header("access-token","{b}"); web_add_header("loginaware","true");
二、定義變量
上面提到添加請求頭的問題,例如系統部署時配置需要經過網關做權限認證,才能正常登錄訪問系統,所以每個接口請求都需要添加請求頭!如上圖中,包含了access-token,這個token存在有效期,超過30分鍾就會失效;當token失效時,運行腳本前就得拿新的token值替換掉腳本中失效的token,手動一個個替換的話很費時;這里可以通過定義變量進行引用解決!
如圖,在腳本中各事務前定義變量a,並將字符串a賦值給b,並在后續的腳本的請求頭中引用b的值;通過定義變量,后續當token失效時,只需替換變量a中的值即可。
1 char *a="1b284eb3ec923775528440a631af5868"; #定義變量a 2 lr_save_string( a,"b" ); #使用lr_save_string()將以""結束的字符串(a)保存到參數b中 3 lr_output_message(lr_eval_string("{b}")); #lr_eval_string() 所有出現參數b的地方用它的當前值來代替;lr_output_message() 打印函數,打印b的值
三、響應內容亂碼轉換為中文
前幾篇文章有提到過LoadRunner11接口響應內容亂碼的問題,當插入檢查點時,在日志中就無法判斷檢查結果是否符合預期結果。因此可以將查找的亂碼內容轉換為中文並打印,可在日志中直接看到真實結果。
文本檢查點技巧相關知識請查閱另一篇博文,此處不過多描述,僅提供亂碼內容轉換為中文的代碼:
1 //將查找目標轉為utf8編碼,放在變量test_find中 2 lr_convert_string_encoding( "鍒樻絿娼", 3 LR_ENC_UTF8, 4 LR_ENC_SYSTEM_LOCALE, 5 "text_find" ); 6 7 //將test_find內容變為string,存在變量find中 8 lr_save_string( lr_eval_string("{text_find}"),"find" ); 9 10 //打印變量find的值 11 lr_output_message("檢查點亂碼內容轉譯 = %s", lr_eval_string("{find}"));
實際運行結果:
四、事務拆分
有時錄制腳本,一個事務可能會出現在它的重定向頁面中,腳本中沒能體現,如下圖,一個html頁面包含了很多個接口:
為了查看該頁面的每一個接口的具體響應時間,需要將頁面下的每一個接口進行拆分,具體代碼如下:
web_custom_request("query.v", "URL=http://ip+端口/請求URL", "Method=GET", "Resource=0", "Referer=", "Snapshot=t1.inf", "Mode=HTTP", "EncType=text/html;charset=UTF-8", "Body=", LAST);
五、備注
1、定義的變量的是全局的,只需要定義一個即可;
2、 output_message調試腳本時才使用,壓測時需注釋;
3、init-action-end場景運用。action才加事務;
4、每個場景腳本,均需要有退出,否則有可能出現某些用戶無法再測登錄的情況;
5、無關的關聯需刪除,會消耗資源和性能;