Loadrunner提供了若幹message函數,以在腳本回放中和腳本運作中,對外輸入資訊,主要的函數有:
【lr_message】
int lr_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_message函數将資訊發送到日志檔案和輸入視窗。在VuGen中運作時,輸入檔案為output.txt。
【lr_log_message】
int lr_log_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_log_message函數将消息發送到Vuser或代理日志檔案(取決于應用程式),而不是發送到輸出視窗。通過向日志檔案
發送錯誤消息或其他資訊性消息,可以将該函數用于調試。
【lr_error_message】
int lr_error_message (const char *format, exp1, exp2,...expn. );
中文解釋:lr_error_message函數将錯誤消息發送到輸出視窗和Vuser日志檔案。要發送不是特定錯誤消息的特殊通知,請使用lr_output_message。
【lr_output_message】
int lr_output_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_output_message函數将帶有腳本部分的行号的消息發送到輸出視窗和日志檔案。
【lr_vuser_status_message】
int lr_vuser_status_message (const char *format);
中文解釋:lr_vuser_status_message函數向控制器或優化子產品控制台的vuser視窗的“狀态”區域發送字元串。它還将該字元串發送
到vuser日志。從VuGen運作時,消息被發送到output.txt。
下面大家看例子:
Action()
{
int i,j,k;
char *message;
j = k = 1000;
message = "資訊";
lr_message("****************輸出區域開始*****************");
lr_message(" lr_message %s:十進制=%d,八進制=%o,十六進制=0x%x",message,j,j,j);
lr_log_message(" lr_log_message %s:十進制=%d,八進制=%o,十六進制=0x%x",message,j,j,j);
lr_error_message(" lr_error_message %s:十進制=%d,八進制=%o,十六進制=0x%x",message,j,j,j);
lr_output_message(" lr_output_message %s:十進制=%d,八進制=%o,十六進制=0x%x",message,j,j,j);
lr_message("****************輸出區域結束*****************");
for (i=1;i<6;i++)
{
k += 1000;
lr_think_time (5);
lr_vuser_status_message("第%d次:%s,十進制=%d,八進制=%o,十六進制=0x%x",i,message,k,k,k);
}
return 0;
}
例子說明:
1、message系列的函數參數格式和c語言中的printf格式是完全相同的。
2、格式化輸入标志符号"%",想必大家也比較熟悉。其中%d是十進制,%o是八進制,%x是十六進制,%s是字元;還有%g、%u、%c等,自己去查。
3、回放這個腳本後,進入腳本根目錄檢視mdrv.log,所有輸出都可以在這裡找到。
4、lr_error_message回放日志中顯示的是紅色的字型,且顯示語句所在行号;同時,如果腳本在controllor中運作時,會生成一個error資訊。
5、lr_vuser_status_message會在controllor的vuser list的status列中顯示,controllor每5秒重新整理一次。
6、當然,也支援轉義字元的使用,清單如下:
\a 鈴聲(警告)
\b Backspace 鍵
\f 換頁
\n 換行
\r 回車
\t 水準制表符
\v 垂直制表符
\' 單引号标記
\" 雙引号标記
\\ 反斜杠
\? 文本問号
\ooo ASCII 字元 - 八進制
支援的轉換字元有:
%a ASCII 表示形式
%BX 大端(網絡順序)十六進制
%BO 大端(網絡順序)八進制
%BD 大端(網絡順序)十進制
%LX 小端十六進制
%LO 小端八進制
%LD 小端十進制
==============================================================
此外,loadrunner還提供了在腳本中控制runtime-setting的log設定的函數。
【lr_debug_message函數組】
int lr_debug_message (unsigned int message_level, const char *format, ... );
中文解釋:lr_debug_message函數在指定的消息級别處于活動狀态時發送一條調試資訊。如果指定的消息級别未出于活動狀态,則不
發送消息。您可以從使用者界面或者使用lr_set_debug_message, 将處于活動狀态的消息級别設定為MSG_CLASS_BRIEF_LOG
或MSG_CLASSS_EXTENDED_LOG。要确定目前級别,請使用lr_get_debug_message。
unsigned int lr_get_debug_message ( );
中文解釋:lr_get_debug_message函數傳回目前的日志運作時設定。該設定确定發送到輸出端的資訊。日志設定是使用運作時設定對
話框或通過使用lr_set_debug_message函數指定的。
int lr_set_debug_message (unsigned int message_level, unsigned int on_off);
中文解釋:lr_set_debug_message函數設定腳本執行的調試消息級别message_lvl。通過設定消息級别,可以确定發送哪些資訊。 啟
動設定的方法是将LR_SWITCH_ON作為on_off傳遞,禁用設定的方法是傳遞LR_SWITCH_OFF。
參數on_off說明:
【LR_SWITCH_ON】啟用設定
【LR_SWITCH_OFF】禁用設定
看下面的小例子:
Action()
{
int log_leavl;
log_leavl = lr_get_debug_message();
lr_error_message ("目前是:%d",log_leavl);
return 0;
}
當我設定隻有錯誤資訊(error)列印【勾選send messages only when an error occurs】,例子運作結果是:目前是:513;
為什麼不是512呢,我發現我實際選擇的是【Enable logging + send messages only when an error occurs】,按上面的
參數說明,就是【1+512】,也就是513了;是以:
lr_get_debug_message傳回的int數其實是所有勾選操作的代表值相加!
再看下面設定的例子:
Action()
{
//設定runtime-setting的日志選項【不勾選Enable logging】
char *a;
a = "ABC";
lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_ON);
//打開Runtime-setting Log 的Parameter substitution設定
lr_debug_message(LR_MSG_CLASS_PARAMETERS,"打開參數儲存的系統日志");
lr_save_string("aa",a);
lr_debug_message(LR_MSG_CLASS_PARAMETERS,"關閉參數儲存的系統日志");
lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_OFF);
//關閉Runtime-setting Log 的Parameter substitution設定
return 0;
}
因為設定了runtime-setting不列印任何日志,是以正常運作腳本應該沒有任何日志輸出;
但是使用lr_set_debug_message函數打開了日志的設定(輸出儲存參數操作的日志)
是以腳本運作到lr_save_string("aa",a)時,就輸出了日志如下:
打開參數儲存的系統日志
Action.c(7): Notify: Saving Parameter "ABC = aa"
關閉參數儲存的系統日志
轉自:領測軟體測試網[http://www.ltesting.net]
原文連結:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0517/204897_2.html