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

LoadRunner关联通用函数的学习

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

51Testing软件测试网D IHn(cS VS

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

Ce:hg cQ+L0

!o-iTS VRm0   Loadrunner脚本中进行关联的时候,用到了一些函数,作用是把字符串保存到参数中,并且在需要的时候检索出来.C Vusers中用到的函数有:

YP-i/r,c'I8J0Y lc051Testing软件测试网XBQW.@z4j#i

lr_eval_string  所有出现参数的地方用它的当前值来代替.

^k.P7@`051Testing软件测试网^~*quS._#m

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

YsY]5[DEiBBT051Testing软件测试网s6js6m.[ e @)ig4{m

lr_save_var 把变长字符串保存到参数中.51Testing软件测试网te7XI*n-@

Q:Bn3wn:n0下面再来看下每个函数的具体解释(参考帮助):51Testing软件测试网*v6l._%T`/gn9?S6p

n!K+zo'hP0lr_eval_string:

\O O7Vg)Q D0

C Language51Testing软件测试网@I I/M4O5Y'?

char *lr_eval_string (const char *instring);

.e2MohO"N0

返回内嵌参数赋值后的字符串。51Testing软件测试网m:FLf)D(v]*~q

.o1eI6P4sM@;YMC0

v+Q1Uch7O0instring:需要赋值的字符串。51Testing软件测试网z#G~#eM7P0fo:x,_ryA

51Testing软件测试网2`km n3wYzm&U

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

/Z_G(rl051Testing软件测试网T,K%@ hg'W#I8s

内嵌参数必须在括号中。51Testing软件测试网1b2ZS } GhkV~Y

51Testing软件测试网R*[jD)F `Y

注:lr_eval_string是内部地分配内存。在每一次迭代之后会释放。如果你在循环中给参数赋值,不要使用lr_eval_string保存内存。你需要使用lr_eval_string_ext,并且在每个循环迭代中使用lr_eval_string_ext_free释放内存。

@fj Su c051Testing软件测试网y@-r%cn G J'H%e[p

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

p4xRYAq0

oZ&bQX#Sn0例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。51Testing软件测试网/J8cot9\#T

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

6d&F Sb,x4D~0

lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0);

{9I:S8aT3V_F0

lrd_exec(Csr1, 0, 0, 0, 0, 0);

t] vg6`/~T3?-N0

lrd_save_col(Csr1, 1, 1, 0, "row_cnt");51Testing软件测试网#h*ixt0Rg

lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);51Testing软件测试网5I7^s ]Pp7i l:{mR

lr_output_message("value : %s",

O*zJ!~u4|fBLn0

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

6Rj4K9G XI0

lr_save_string:

l9o-R1} z$ot0

C Language

X9j3jb0G0

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

ITk ^ Q5PkJ0

param_value:给参数赋值的值,参数值

7p rG^ |-? u0

param_name:参数名称

"~l1e"SNmx0

lr_save_string函数把指定的以空结束的字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。51Testing软件测试网ko){+oH,wvP

例子:

9\6]I2uI:\6t1F:y0

在下面的例子中,lr_save_string给参数emp_id赋值为777。然后这个参数被用在另一个查询中。51Testing软件测试网+LF sc&UK R

lrd_stmt(Csr1, "select id from employees where name='John'", ...);51Testing软件测试网j.{7N1_D3HFG`%?

lrd_bind_col(Csr1,1,&ID_D1,...);51Testing软件测试网v,y.f O;d

lrd_exec(Csr1, ...);

Zl;`B:NFA0`yM0

lrd_fetch(Csr1, 1, ...);

'DB:D p"Q:Q1v L,]0

51Testing软件测试网!dS P d q){.{

 

ID_D1

.K g4y'AKK2nZ0

0

h$D,k2@ q"G9jM0

777

n)V%\:K MwM)o1J0

51Testing软件测试网 S)s9sqC,n | QRNv

lr_save_string("777", "emp_id");

/deMtU2_3c+]B]0

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

UYEn6A0

lrd_exec(Csr1, 0, 0, 0, 0, 0);

SP;O'Ky T0

lr_save_var51Testing软件测试网R V Aw g9d:_B/b

C Language

o%CcZ.S D$d(b"Ll0

intlr_save_var (const char *param_value, unsigned long constvalue_len, unsigned long constoptions, const char *param_name);

&}]I6k*~/{$Mr0

param_value:参数值51Testing软件测试网WH3@6] v6n

value_len:值的字节长度

juN,}T0

options:参数选项,一般为0。51Testing软件测试网s6{2?K6xi2AP!x

param_name:参数名称。

9K9q'hd,UU }X5f:L0

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

p6}4g#y:T} l|0~;s0

例子:

vF9tC9ys0

在下面的例子中,lr_save_var 用来限制参数的长度。51Testing软件测试网d4Q N,h `

Action()51Testing软件测试网c P#T;p^;g'U

{

;q x2~+DwV1]&VzU0

       #define MAX_NAME_LEN 4

~N2SbG M&i0

[mD9V[0

// 创建参数, InName51Testing软件测试网 VN L_)GQ T}:t&g

       lr_save_string("Fitzwilliam", "InName");51Testing软件测试网)Kh `%O$^1y Wr

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

+p]+W-~0Z`(f0J`%kl#bDb0

       lr_save_var( lr_eval_string("{InName}"),

}} }r6Nm qp*fA0

              MAX_NAME_LEN, 0, "ShortName");51Testing软件测试网.[CWbyf'V-c O

       return 0;

&Z,sT5aG\#LR Ii.ZF0

}51Testing软件测试网Le-{'Y}M#y

Output:

M)B)lCk8L9^A0

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

/s"k/d(s7w V O$j*\N0

Action.c(10): Notify: Saving Parameter "ShortName = Fitz"51Testing软件测试网3Qf|1^i Qkt

  ok,用了一上午时间把这几个函数学习了下,哈哈,当然早晨也起来的晚了,今天星期日呀。希望这篇文章对大家有用。51Testing软件测试网+WU q"W]&L0_1XpB


;j ^_L9K(O#]0

.|yP5s iJt~0

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

Mu]5FNM[3n0

 

$PrNB,Ia h*J0

 51Testing软件测试网 _z:l5n!g%L1[#j'A

 

E5wg:D!]tw0

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