热爱测试,主要研究性能测试和自动化测试方面的技术,希望与同样对测试有热情的你一同进步成长

LoadRunner关联通用函数的学习

上一篇 / 下一篇  2007-12-16 13:04:29 / 个人分类:性能测试

G/`'v{[K6O0   写这篇文章的时候,我先声明一下,本BLOG中的文章如果没有写出是转贴的一般就是本人原创.

DX7j|s ICs0

0n-mUL@ w"er0   Loadrunner脚本中进行关联的时候,用到了一些函数,作用是把字符串保存到参数中,并且在需要的时候检索出来.C Vusers中用到的函数有:

3uqC5O^0

A5@L%M6z,L W0lr_eval_string  所有出现参数的地方用它的当前值来代替.

/{Yv SH4g}.g8[051Testing软件测试网;[)]D"T)Yut

lr_save_string   把null-terminated字符串保存到参数中.其中,null-terminated的意思,我从网上查了下是:"以空字符为结束标志的字符串",也就是以"\0"结束的字符串,其中的0是ASCII码的0,是不能用显示字符表示出来的,只有用转义字符表示了.

W r ~VC?(I0

q F]QU?0lr_save_var 把变长字符串保存到参数中.51Testing软件测试网.X-I n4O@-y:B P"^

_`G[G0下面再来看下每个函数的具体解释(参考帮助):51Testing软件测试网Q O"pg:F-}8U(QSL |

51Testing软件测试网+]4LKi$Ab0|_B2d

lr_eval_string:

;U4T4t1vy | {0

C Language

wAn*z]1N:q;b/f0

char *lr_eval_string (const char *instring);51Testing软件测试网u)cP~}G OV

返回内嵌参数赋值后的字符串。51Testing软件测试网v D%K1U#@4W

da\){d'JDZ1]051Testing软件测试网9qq7z{ z+Z/Y {2[

instring:需要赋值的字符串。

;^@%J9w:h051Testing软件测试网)k8j)p.Z9w jMu

lr_eval_string函数返回任何内嵌参数赋值后的输入字符串。如果字符串变量只包含一个参数,函数返回参数的当前值。

q5J4O~c9m$}`0Cr0

+A+t.M2C3J#LE0内嵌参数必须在括号中。51Testing软件测试网OH~Y:i9k

-Q,E'~0MicT0O*jt(W'\0注:lr_eval_string是内部地分配内存。在每一次迭代之后会释放。如果你在循环中给参数赋值,不要使用lr_eval_string保存内存。你需要使用lr_eval_string_ext,并且在每个循环迭代中使用lr_eval_string_ext_free释放内存。

.p*UPl~d|"T051Testing软件测试网y+F?^C

这里我再补充一下:lr_eval_string_ext在关联的数据是二进制数据,例如,数据包含嵌入的NULL字符时是非常有用的。

:G'we}%{ e0

}1a/H U4_\u x i0例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。

,`^[ME5?)E0

lrd_stmt(Csr1, "select count(*) from employee", -1, 1 /*Deferred*/, 2 /*Ora V7*/, 0);

:A2M cB4A0

lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0);51Testing软件测试网3b,{v*|'V$d!}}

lrd_exec(Csr1, 0, 0, 0, 0, 0);51Testing软件测试网I,]6T SO|yV

lrd_save_col(Csr1, 1, 1, 0, "row_cnt");51Testing软件测试网jtb%h'|a#O#b3?

lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);51Testing软件测试网V.s sBV-_8W R$o

lr_output_message("value : %s",51Testing软件测试网G;w6J@f M

       lr_eval_string("The row count is: {row_cnt}"));

cYa@7[6D3pJ0

lr_save_string:

q&z1V ]C ^QT)C{0

C Language

+dz~o ypV,?wr0

intlr_save_string (const char *param_value, const char *param_name);

"Fq)i @!uC H0

param_value:给参数赋值的值,参数值51Testing软件测试网%\.cAVH eD(V

param_name:参数名称

W@ S4u"C xU"fyk0

lr_save_string函数把指定的以空结束的字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。

$q9P#@ BD0

例子:51Testing软件测试网([#g:sS;KR'Z-ip"Uy.zC

在下面的例子中,lr_save_string给参数emp_id赋值为777。然后这个参数被用在另一个查询中。51Testing软件测试网R1yO)G3x+u's,k

lrd_stmt(Csr1, "select id from employees where name='John'", ...);

4HI2fi)Zj4q9^0

lrd_bind_col(Csr1,1,&ID_D1,...);51Testing软件测试网6Q _I dOe] d

lrd_exec(Csr1, ...);51Testing软件测试网j%]f)`B&t*m"b

lrd_fetch(Csr1, 1, ...);

j x'\E't L w^0

51Testing软件测试网3w3Z%G'do_,]

 

ID_D1

U_nh6S aP)g1]0

051Testing软件测试网"{&} ez:u@:x4\.Y o

77751Testing软件测试网 v-f"F5y`9]&K9a*e

!M1r``,nK,C2Z0

lr_save_string("777", "emp_id");

w:maa6C;t0kA0

lrd_stmt(Csr1,"select salary from payment where id ='{emp_id}'",...);

oz9IRP9A0

lrd_exec(Csr1, 0, 0, 0, 0, 0);51Testing软件测试网B%Fw{ H v}h

lr_save_var

/l\[(xuZ0

C Language51Testing软件测试网Es$b4KL*A$J&I

intlr_save_var (const char *param_value, unsigned long constvalue_len, unsigned long constoptions, const char *param_name);51Testing软件测试网|0Qj Y4Z&S},g+yh,a

param_value:参数值

^:aHL9ww0

value_len:值的字节长度51Testing软件测试网2{{5[.FC!R s`H

options:参数选项,一般为0。51Testing软件测试网^ GayP*DC

param_name:参数名称。

|0X3?3W`(Su$s }0

lr_save_var函数把指定的变长字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。

` eW7c Q,z6W?0

例子:51Testing软件测试网iX q!}#oZ

在下面的例子中,lr_save_var 用来限制参数的长度。51Testing软件测试网2F"c%}f$]5G)Ux

Action()51Testing软件测试网S5by{s G Vw

{51Testing软件测试网'q!^aw$C

       #define MAX_NAME_LEN 4

,s#k go9B2R$S8[0

;x-[]n9FU+r0

// 创建参数, InName

P(W!Q Rh9JI0

       lr_save_string("Fitzwilliam", "InName");51Testing软件测试网$ka^m{]7H;y

// 把 "InName"的前四个字节保存到 "ShortName"

[G5hT!A/?0

       lr_save_var( lr_eval_string("{InName}"),

-rB3O&|2[3}3U7l;~0

              MAX_NAME_LEN, 0, "ShortName");

!^jh$r.E Mf0

       return 0;51Testing软件测试网!c!b,d L3e|\X(y8rR

}

U0TjF'E$j0

Output:

`lL5kGo:t4C0

Action.c(8): Notify: Saving Parameter "InName = Fitzwilliam"

1N"zFRTnF!V#^`0

Action.c(10): Notify: Saving Parameter "ShortName = Fitz"

CIx+Im)T0

  ok,用了一上午时间把这几个函数学习了下,哈哈,当然早晨也起来的晚了,今天星期日呀。希望这篇文章对大家有用。

Sg.H1E fN W0


DG.@{w,rNR[R%E^051Testing软件测试网E2C5}Z }N

本文为zibeike原创,转载请注明出处:http://www.51testing.com/?34866

!_zITHQ4NW_(])w0

 51Testing软件测试网m!n2pE#\9Jq&C;L%rOy

 

^9p!HDta f0

 51Testing软件测试网yv)c*P{:c~U]z


TAG: 性能测试

bossy的个人空间 引用 删除 bossy   /   2008-09-17 09:53:44
不太适合新手看,例子中大部分函数没有说明。
zibeike的个人空间 引用 删除 zibeike   /   2008-09-02 22:39:50
我这里说到是跟协议无关的一些通用函数,如果跟协议相关的函数的话,那肯定是web_reg_save_param(),lrs_save_param()等了,可能文章名称确实有些误导人了。
卖烧烤的鱼测试博客 引用 删除 卖烧烤的鱼   /   2008-08-28 15:57:53
缺少web_reg_save_param,lr_output_message等函数的配合使用,通常关联操作这些函数联系比较紧密,基本上均需要
 

评分:0

我来说两句

Open Toolbar