关注于测试自动化和测试管理,我是一个永远的测试新手。

Loadrunner message函数详细分析

上一篇 / 下一篇  2007-06-15 18:32:29

51Testing软件测试网NBD H+Jk@

Loadrunner提供了若干message函数,以在脚本回放中和脚本运行中,对外输入信息,主要的函数有:
M1h,`!IE2Z b9Ir0lr_message51Testing软件测试网K NM p;VX#B
 int lr_message (const char *format, exp1, exp2,...expn.);51Testing软件测试网8U.CQ:ed|5MN
 中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。

v#]"V8Y S051Testing软件测试网'zGb;nZzV

【lr_log_message】51Testing软件测试网S5mtg(Q
 int lr_log_message (const char *format, exp1, exp2,...expn.);
TPx JnK H Y7{0 中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。通过向日志文件
pO/\'|1O,T#W0    发送错误消息或其他信息性消息,可以将该函数用于调试。

.d5v8U;d&^9f*{-k051Testing软件测试网Tnm#H$iO-e5jCS

【lr_error_message】
7|ITAYe0 int lr_error_message (const char *format, exp1, exp2,...expn. );51Testing软件测试网K-n1I$R8`{,Yh9];r4Q`O
 中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。51Testing软件测试网\0NYQ&o(x

51Testing软件测试网 {!kO5r:H/C,~k

【lr_output_message】51Testing软件测试网RVP Y%c.Z%]
 int lr_output_message (const char *format, exp1, exp2,...expn.);
kz)`0gG0 中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。51Testing软件测试网"Jl w1D2T e,]

"q!T Lc}P\9a0【lr_vuser_status_message】
f If9~k L z0 int lr_vuser_status_message (const char *format);
6S}K&v\f0 中文解释:lr_vuser_status_message函数向控制器或优化模块控制台的vuser窗口的“状态”区域发送字符串。它还将该字符串发送51Testing软件测试网7~,a/N/DKe|
    到vuser日志。从VuGen运行时,消息被发送到output.txt。

#S5|"^&RGS8F051Testing软件测试网j Y7b"cNFg`3R u,s5?

下面大家看例子:51Testing软件测试网%tAF3B:g3z
Action()
6v4][vR0{
T p[6JX Oe3|0 int i,j,k;
R}Exg!On0 char *message;
&z.M e sK@+l/qU3^z4_0 j = k = 1000;51Testing软件测试网.K6q2As*Dw,S%J3LF

51Testing软件测试网t$~"@4e){(D0|T3~&M0b'l

 message = "信息";51Testing软件测试网3bXN;~ ea'A;O
 lr_message("****************输出区域开始*****************");51Testing软件测试网's#gL ezw,VU;v
 lr_message("   lr_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网%xoVU2x*rt~
 lr_log_message("   lr_log_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网1Yn(G!s5V.}
 lr_error_message("   lr_error_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);
c,` [%dVmz0 lr_output_message("  lr_output_message   %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j);51Testing软件测试网#j*w3R YC$I
 lr_message("****************输出区域结束*****************");
0Fy]"GL[#H C8L0 for (i=1;i<6;i++)
(g&vn"mA,Z,z]N0 {
O^R `8c$GjL0  k += 1000;51Testing软件测试网wYcI1c
  lr_think_time (5);
XQ/i `p h!y0  lr_vuser_status_message("第%d次:%s,十进制=%d,八进制=%o,十六进制=0x%x",i,message,k,k,k);51Testing软件测试网xY0`:d:^ E:{
 }
'hy1E Fjq x.?0 return 0;51Testing软件测试网nMN$\AS
}51Testing软件测试网R+y0uB.yn,M
例子说明:51Testing软件测试网"ta0wC J"y+Z
1、message系列的函数参数格式和c语言中的printf格式是完全相同的。
0V#D)PR M&t^4z-@ g02、格式化输入标志符号"%",想必大家也比较熟悉。其中%d是十进制,%o是八进制,%x是十六进制,%s是字符;还有%g、%u、%c等,自己去查。51Testing软件测试网KE;]3jl2a
3、回放这个脚本后,进入脚本根目录查看mdrv.log,所有输出都可以在这里找到。
m,k_L J(Hs,q04、lr_error_message回放日志中显示的是红色的字体,且显示语句所在行号;同时,如果脚本在controllor中运行时,会生成一个error信息。
qq!tc rl%|Ot y6I3h05、lr_vuser_status_message会在controllor的vuser list的status列中显示,controllor每5秒刷新一次。51Testing软件测试网.o dMmB(n NV
6、当然,也支持转义字符的使用,列表如下:
XO eel)Xf0\a 铃声(警告)
8^ C,i @X;I#a0\b Backspace 键
e'D6Fq ov3z)@m'N0\f 换页51Testing软件测试网4M A b ]&rq
\n 换行
;b5s9qlQ7m+N0\r 回车
6{5d eVO0\t 水平制表符51Testing软件测试网/qI a/uS)a7T8n+z XRF
\v 垂直制表符
2V7`2o#w8l`I,R0\' 单引号标记
)h,? y*n#Dp0\" 双引号标记
'Wh[jPj#c&lu x0\\ 反斜杠
z kn d {&gP(Z Y0\? 文本问号51Testing软件测试网U,N-tu-~S;r FZ+P8N j
\ooo ASCII 字符 - 八进制51Testing软件测试网/["E m(u#_Ep@&d
支持的转换字符有:
ycHGH |0%a ASCII 表示形式51Testing软件测试网if R\CH
%BX 大端(网络顺序)十六进制
0pX U |"N#u j@0%BO 大端(网络顺序)八进制51Testing软件测试网w;p+VNk Xy
%BD 大端(网络顺序)十进制
5\&F yeoL,Q} m S0%LX 小端十六进制51Testing软件测试网%lG6zW2d&_%l
%LO 小端八进制51Testing软件测试网z8f`~m A.i
%LD 小端十进制

;drB6w T051Testing软件测试网F-R+~/R*s:W4{R;w

==============================================================51Testing软件测试网u\1MWS1T

$b&Ru+_,u0此外,loadrunner还提供了在脚本中控制runtime-setting的log设置的函数。51Testing软件测试网:[&m7]"D0b1T)ro|
【lr_debug_message函数组】
r%AVf9a\0int lr_debug_message (unsigned int message_level, const char *format, ... );51Testing软件测试网o D+qGto
 中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。如果指定的消息级别未出于活动状态,则不51Testing软件测试网 o|6Z8Vq$ygBNM!Q
    发送消息。您可以从用户界面或者使用lr_set_debug_message, 将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG
![Y(_OM+W0    或MSG_CLASSS_EXTENDED_LOG。要确定当前级别,请使用lr_get_debug_message。

)^*y w%{g051Testing软件测试网 R+Wg ^$qV`2u.yZ

unsigned int lr_get_debug_message ( );51Testing软件测试网.Q%L:HV1G,L0Zg9e
 中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置确定发送到输出端的信息。日志设置是使用运行时设置对
M0sn4K1~0    话框或通过使用lr_set_debug_message函数指定的。51Testing软件测试网ueE C^3x

lQYQY_M(xc.mg)_0int lr_set_debug_message (unsigned int message_level, unsigned int on_off);
't iq(Li"J,U.F0 中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。通过设置消息级别,可以确定发送哪些信息。 启
}1tn_0G+W0    动设置的方法是将LR_SWITCH_ON作为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。51Testing软件测试网X L7T'w dj9k g

51Testing软件测试网[;Z Mrx-ae

参数message_level说明: 

b} J P*`i J+FZR"D051Testing软件测试网#N:A[ Lzoa

 日志级别51Testing软件测试网Ne-b8}M o A

 C语言标志51Testing软件测试网b)iQ^Y3q

 值

A*eG!` U@L)kd0

 Runtime-setting - Log操作

}K ~1d;^T(F0`@0
 Disabled LR_MSG_CLASS_DISABLE_LOG 0 不勾选Enable logging
 Brief LR_MSG_CLASS_BRIEF_LOG 1 勾选Standard log
 Extended Log LR_MSG_CLASS_EXTENDED_LOG 16 勾选Extended log
 Result Data LR_MSG_CLASS_RESULT_DATA 2 勾选Data returned by server
 Parameter Substitution LR_MSG_CLASS_PARAMETERS 4 勾选Parameter substitution
 Full Run-Time Trace LR_MSG_CLASS_FULL_TRACE 8 勾选 Advanced trace
 Only on error LR_MSG_CLASS_JIT_LOG_ON_ERROR 512 勾选send messages only when an error occurs
51Testing软件测试网.H2tbw3pQO6l/Kh,E

GsN|4n6k ~ Q1?f0参数on_off说明:51Testing软件测试网#xG4CV,Jw7e&r`j
【LR_SWITCH_ON】启用设置51Testing软件测试网pK5EHwV^[v
【LR_SWITCH_OFF】禁用设置

$`rXy(i051Testing软件测试网4G%g"x'm4r({0g"m


U5Ea {H3T)S{0看下面的小例子:51Testing软件测试网!o]0B.Wp
Action()51Testing软件测试网1VY-Ss0N!PZ-zA"N W$t
{51Testing软件测试网3t0s1] tYm~ |
 int log_leavl;
.u#o iI2p*X gG%tA0 log_leavl = lr_get_debug_message();51Testing软件测试网qb2O2X+_$p2p8y
 lr_error_message ("当前是:%d",log_leavl);51Testing软件测试网!p*]2qnR
 return 0;
7NocE4E^`#RA(l4a'j0}
0?fL$Q#q0当我设置只有错误信息(error)打印【勾选send messages only when an error occurs】,例子运行结果是:当前是:513;51Testing软件测试网H&F5T*O7[)s[)u
为什么不是512呢,我发现我实际选择的是【Enable logging + send messages only when an error occurs】,按上面的51Testing软件测试网%P"K:s3\3O8W3n
参数说明,就是【1+512】,也就是513了;因此:
ox.J ^^j0lr_get_debug_message返回的int数其实是所有勾选操作的代表值相加!51Testing软件测试网M+`$FE"zu F/?;l!p

j)CZ^I051Testing软件测试网'rztP_5Hj fX
再看下面设置的例子:

D+l;Q$A wAc+a0

\ v-vf0P ?*n*N0Action()
}&b3F `.X)f0{51Testing软件测试网{"i7U4T1b4X-dk1f#o k!P
//设置runtime-setting的日志选项【不勾选Enable logging】51Testing软件测试网a _Dt@V@
 char *a;
YT^zW0 a = "ABC";51Testing软件测试网Re3zx%mUr}
 lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_ON);
u.r,nA O.H0 //打开Runtime-setting Log 的Parameter substitution设置51Testing软件测试网#R g.f%\Ln\ g\
 lr_debug_message(LR_MSG_CLASS_PARAMETERS,"打开参数保存的系统日志");
7X vYf @0 lr_save_string("aa",a);51Testing软件测试网j U X$v{Q
 lr_debug_message(LR_MSG_CLASS_PARAMETERS,"关闭参数保存的系统日志");
7ODb PnV0 lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_OFF);
/s)P/Fr,eJ0 //关闭Runtime-setting Log 的Parameter substitution设置

t A#x p+Y ~ O~q051Testing软件测试网 ?a6T xPy

 return 0;
n&E9x2U P;pt0}
:EU4t(P,fa+Bw xG0因为设置了runtime-setting不打印任何日志,所以正常运行脚本应该没有任何日志输出;
5b!{V$A(\4C#B0但是使用lr_set_debug_message函数打开了日志的设置(输出保存参数操作的日志)51Testing软件测试网o5l/L3g;Nrf
因此脚本运行到lr_save_string("aa",a)时,就输出了日志如下:51Testing软件测试网W,\!q#g(\

51Testing软件测试网P"X%X@f`#t

打开参数保存的系统日志51Testing软件测试网J b7Hu`9k6plr
Action.c(7): Notify: Saving Parameter "ABC = aa"
ED Z [F"s"EQ0关闭参数保存的系统日志51Testing软件测试网2b1A K.{9W^6TJ

51Testing软件测试网y4v\KL%ij

==============================================================

%cZ%I3|-D9|0

k/y9sy0p%u0参考资料:Loadrunner 8.1 函数手册英文(Virtual User Generator - Help -Function Reference)

w7e9uIeW#|051Testing软件测试网 kqzC/Q?&XT

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

fKL;d/\K0

X#lR$e+c)Ju z5o0可以加QQ410225一起讨论

7_#xx)~S0_`pJ`;}^a#t0

TAG: LoadRunner 函数 lr_message

引用 删除 xylhldy   /   2012-04-09 15:23:42
-5
 

评分:0

我来说两句

qiguojie

qiguojie

北京测试一草根儿

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 120378
  • 日志数: 39
  • 图片数: 1
  • 建立时间: 2007-06-05
  • 更新时间: 2011-06-29

RSS订阅

Open Toolbar