十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

Loadrunner message函数详细分析

上一篇 / 下一篇  2007-11-03 11:11:08 / 个人分类:loadrunner

v9Mvk_$cZi0Loadrunner提供了若干message函数,以在脚本回放中和脚本运行中,对外输入信息,主要的函数有:51Testing软件测试网OV)Z|0D9V
【lr_message】
`} }WI4f%U8Hh:R0G0 int lr_message (const char *format, exp1, exp2,...expn.);51Testing软件测试网9?}G+LPN\:O
 中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。51Testing软件测试网g ].b;@7d

【lr_log_message】
:P6?[~U2V&g;s ^+F0 int lr_log_message (const char *format, exp1, exp2,...expn.);
v{eU)h+J"~0 中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。通过向日志文件
7C?4z I7w&j0    发送错误消息或其他信息性消息,可以将该函数用于调试。51Testing软件测试网7w8ScLI,OG

【lr_error_message】51Testing软件测试网4Q+Bf z"Q2R }2gV
 int lr_error_message (const char *format, exp1, exp2,...expn. );
I\z1N:{ A#E5|0 中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。

4RWV$](c(sa5@6o0【lr_output_message】
s^GZ0i0 int lr_output_message (const char *format, exp1, exp2,...expn.);51Testing软件测试网%POY"o x s
 中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。

#Y$lzR ?;W0【lr_vuser_status_message】51Testing软件测试网6?'b/pAO6h'O
 int lr_vuser_status_message (const char *format);
;H H.QwA Q VY'p0 中文解释:lr_vuser_status_message函数向控制器或优化模块控制台的vuser窗口的“状态”区域发送字符串。它还将该字符串发送51Testing软件测试网I0Wy2|W'F+W?
    到vuser日志。从VuGen运行时,消息被发送到output.txt。51Testing软件测试网r:^z WP~Zb5BR*j

下面大家看例子:51Testing软件测试网"Qga\\T)|
Action()
4Q6}"uj od/b0{51Testing软件测试网;w9^f(c%g.l3E(V
 int i,j,k;
Wj k@QU&[0 char *message;
1q nd+z(u4~0 j = k = 1000;

ipN;\th0 message = "信息";51Testing软件测试网;q&abnV-^*@ ^ M'O'?
 lr_message("****************输出区域开始*****************");51Testing软件测试网I'@(V"O2]
 lr_message("   lr_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网/Y%L0w)m/D Ajo r
 lr_log_message("   lr_log_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网h8Ed o&Z
 lr_error_message("   lr_error_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);
[ R UU2D0 lr_output_message("  lr_output_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网$f#U.`0B ub+}N
 lr_message("****************输出区域结束*****************");51Testing软件测试网"of N.a/B-R)y3q
 for (i=1;i<6;i++)51Testing软件测试网SH?d7X\#Tn&U
 {51Testing软件测试网 T"S Jv;t*Xw
  k += 1000;51Testing软件测试网?q(HK4@$T0a-S
  lr_think_time (5);51Testing软件测试网["L0x G.v z6j?A
  lr_vuser_status_message("第%d次:%s,十进制=%d,八进制=%o,十六进制=0x%x",i,message,k,k,k);51Testing软件测试网7K_t.tN~.eP
 }
X~c1b|+u7y0 return 0;
$Dk sr Y[\0}51Testing软件测试网 ^+K P_:U
例子说明:51Testing软件测试网a&T1^/Nr)J0oj
1、message系列的函数参数格式和c语言中的printf格式是完全相同的。
4F\TW@8t02、格式化输入标志符号"%",想必大家也比较熟悉。其中%d是十进制,%o是八进制,%x是十六进制,%s是字符;还有%g、%u、%c等,自己去查。
V!Nz3?y03、回放这个脚本后,进入脚本根目录查看mdrv.log,所有输出都可以在这里找到。
,K2g3l x$H04、lr_error_message回放日志中显示的是红色的字体,且显示语句所在行号;同时,如果脚本在controllor中运行时,会生成一个error信息。51Testing软件测试网P5NKyc3l!c&j@
5、lr_vuser_status_message会在controllor的vuser list的status列中显示,controllor每5秒刷新一次。51Testing软件测试网z|1xCF
6、当然,也支持转义字符的使用,列表如下:
0@p.j_ lR%s|0\a 铃声(警告)
6Ywi u t9s`.C-Yp0\b Backspace 键
:Vir%f_+EEV2Y0\f 换页
$U)C4J;g i(r0\n 换行
#?%V!~c#? vk5FKjv0\r 回车
G[*m3\CHm0\t 水平制表符51Testing软件测试网RMQ9aR+I
\v 垂直制表符
qx8@0Y-O:`?!i0\' 单引号标记51Testing软件测试网&}$O$gI4n*b'G
\" 双引号标记51Testing软件测试网I.g;x,M5}id
\\ 反斜杠51Testing软件测试网X$i&`8v$w}x4QE.T
\? 文本问号
3m _e-a1gsEf!pZ0\ooo ASCII 字符 - 八进制
PY P6TO&OU Q0支持的转换字符有:
7u4Ah2V!P:X9sB0Y0%a ASCII 表示形式
cu2R!dX A0%BX 大端(网络顺序)十六进制51Testing软件测试网 b~-@)^r+G TZ
%BO 大端(网络顺序)八进制
r)lH3T.Fle{@5G^0%BD 大端(网络顺序)十进制
Q#H({6b*]_B0%LX 小端十六进制
cC{pTXP0%LO 小端八进制
jgq'Q`a7n(B0%LD 小端十进制

-Z6d} xj i5b P0==============================================================

B8e-a:Xk.y'Z qS,hj0此外,loadrunner还提供了在脚本中控制runtime-setting的log设置的函数。
^t4a.g&o8L ~v0【lr_debug_message函数组】51Testing软件测试网t#J/J.L}J+{
int lr_debug_message (unsigned int message_level, const char *format, ... );
fx _L.mY5q)dj0 中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。如果指定的消息级别未出于活动状态,则不
2s]3cpRH0    发送消息。您可以从用户界面或者使用lr_set_debug_message, 将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG
9W| ~4RuVudU0    或MSG_CLASSS_EXTENDED_LOG。要确定当前级别,请使用lr_get_debug_message。51Testing软件测试网r TV ["se

unsigned int lr_get_debug_message ( );51Testing软件测试网(^%t _&GC(\)c9E$W8qL
 中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置确定发送到输出端的信息。日志设置是使用运行时设置对51Testing软件测试网/?7Fm6u+P*n
    话框或通过使用lr_set_debug_message函数指定的。

']F ^OX0P kY:y U0int lr_set_debug_message (unsigned int message_level, unsigned int on_off);
:mK2pBH0R k(f0 中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。通过设置消息级别,可以确定发送哪些信息。 启51Testing软件测试网#Sf9h ww;zh2MF}
    动设置的方法是将LR_SWITCH_ON作为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。

.Q;} L2n6xY ]l C;E0参数message_level说明:
$c pLn/K*}'j @0【日志级别】====【C语言标志】====【值】====【Runtime-setting - Log操作】 51Testing软件测试网cS%Tr2V,oAG
【Disabled】====【LR_MSG_CLASS_DISABLE_LOG】====【0】====【不勾选Enable logging】 
4_ @3h,I[!F!]^0【Brief】====【LR_MSG_CLASS_BRIEF_LOG】====【1】====【勾选Standard log】51Testing软件测试网/I h,v{LO!^N BQ
【Extended Log】====【LR_MSG_CLASS_EXTENDED_LOG】====【16】====【勾选Extended log】51Testing软件测试网^(f)r-u)^e"y"l
【Result Data】====【LR_MSG_CLASS_RESULT_DATA】====【2】====【勾选Data returned by server】
R#n8vCt0【Parameter Substitution】====【LR_MSG_CLASS_PARAMETERS】====【4】====【勾选Parameter substitution】 51Testing软件测试网S7s0HT,L7eD-N
【Full Run-Time Trace】====【LR_MSG_CLASS_FULL_TRACE】====【8】====【 勾选 Advanced trace】51Testing软件测试网6l o k/YK9nF6v'Y
【Only on error】====【LR_MSG_CLASS_JIT_LOG_ON_ERROR】====【512】====【勾选send messages only when an error occurs】 

g;L7]:J[0参数on_off说明:
\3C~VJ2n0【LR_SWITCH_ON】启用设置
l#_%Lp\ U.HhH0【LR_SWITCH_OFF】禁用设置

&HAW ZKy0
b0FiLs"q0看下面的小例子:
z8\*S o8U#H7]8o0Action()51Testing软件测试网u-jv;z7Znw V\
{
`z+~"G9m t*|0 int log_leavl;51Testing软件测试网#pQ2Vb`h7d`)`){6l
 log_leavl = lr_get_debug_message();51Testing软件测试网l+Cy,D_X:|:`
 lr_error_message ("当前是:%d",log_leavl);
}%[p*s d ?7iU8T0 return 0;
&f#`iP;Wc0}51Testing软件测试网-zx.w h9{\
当我设置只有错误信息(error)打印【勾选send messages only when an error occurs】,例子运行结果是:当前是:513;
f?6E!`)E8E0为什么不是512呢,我发现我实际选择的是【Enable logging + send messages only when an error occurs】,按上面的
1Q!i7kZVsk3d$U0参数说明,就是【1+512】,也就是513了;因此:51Testing软件测试网;aNYzA"S'{"f/X s[
lr_get_debug_message返回的int数其实是所有勾选操作的代表值相加!

-yb;kb/I#r,g0
@ovI V Dy8bMqpn0再看下面设置的例子:51Testing软件测试网\ `N](V

Action()
W oz}-x)B!Va0{51Testing软件测试网,J0jy4p b|
//设置runtime-setting的日志选项【不勾选Enable logging】
i(v x1Mv"lzy2g3{O0 char *a;
!ZRn _/d0 a = "ABC";
&xj~ M:w rj%H{!PJA0 lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_ON);
m ^'@;Q6]4`8t*ar0 //打开Runtime-setting Log 的Parameter substitution设置
*vWt,Kw G0 lr_debug_message(LR_MSG_CLASS_PARAMETERS,"打开参数保存的系统日志");
Ei+L!r#AJ0 lr_save_string("aa",a);
2?7s%J R7^$h#t jt0 lr_debug_message(LR_MSG_CLASS_PARAMETERS,"关闭参数保存的系统日志");
P1Q&AE g0 lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_OFF);
@5c Y'r.U|0 //关闭Runtime-setting Log 的Parameter substitution设置

$B"bVB&jbe-q0 return 0;
1T s)cc+o2E'b0}51Testing软件测试网M} R0XY'N.f
因为设置了runtime-setting不打印任何日志,所以正常运行脚本应该没有任何日志输出;51Testing软件测试网+R?&~G9\h&t[
但是使用lr_set_debug_message函数打开了日志的设置(输出保存参数操作的日志)
^p3g^1ow0因此脚本运行到lr_save_string("aa",a)时,就输出了日志如下:51Testing软件测试网F\i;c}

打开参数保存的系统日志51Testing软件测试网;h*Z6o5V'F0n
Action.c(7): Notify: Saving Parameter "ABC = aa"
!io"Xa5k7S5Ml5Cm0关闭参数保存的系统日志51Testing软件测试网;} e!i^4Iqi

==============================================================51Testing软件测试网{)C Xdznz c

参考资料:Loadrunner 8.1 函数手册英文(Virtual User Generator - Help -Function Reference)51Testing软件测试网O(w4f OX"\

希望大家一起努力把lr用熟用透!!!

7{|~"N b!o0
  • 上一篇文章:

  • TAG: loadrunner LR message函数

    Leon's nest! 引用 删除 yanming_huo   /   2008-12-31 10:00:04
    好东西,很少有对message分析的!
    langwx520--点滴--积累 引用 删除 langwx520   /   2008-04-21 10:54:43
    决对好文,学习!
    TransferForTest的测试空间 引用 删除 TransferForTest   /   2007-11-03 21:31:55
    学到东西了.
     

    评分:0

    我来说两句

    Open Toolbar