LoadRunner关联通用函数的学习

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

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

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

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

lr_save_var 把变长字符串保存到参数中.

下面再来看下每个函数的具体解释(参考帮助):

lr_eval_string:

C Language

char *lr_eval_string (const char *instring);

返回内嵌参数赋值后的字符串。

instring:需要赋值的字符串。

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

内嵌参数必须在括号中。

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

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

例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。

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

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

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

lrd_save_col(Csr1, 1, 1, 0, "row_cnt");

lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);

lr_output_message("value : %s",

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

lr_save_string:

C Language

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

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

param_name:参数名称

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

例子:

在下面的例子中,lr_save_string给参数emp_id赋值为777。然后这个参数被用在另一个查询中。

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

lrd_bind_col(Csr1,1,&ID_D1,...);

lrd_exec(Csr1, ...);

lrd_fetch(Csr1, 1, ...);

 
 

ID_D1

0

777

lr_save_string("777", "emp_id");

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

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

lr_save_var

C Language

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

param_value:参数值

value_len:值的字节长度

options:参数选项,一般为0。

param_name:参数名称。

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

例子:

在下面的例子中,lr_save_var 用来限制参数的长度。

Action()

{

#define MAX_NAME_LEN 4

// 创建参数, InName

lr_save_string("Fitzwilliam", "InName");

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

lr_save_var( lr_eval_string("{InName}"),

MAX_NAME_LEN, 0, "ShortName");

return 0;

}

Output:

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

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

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

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

LoadRunner关联通用函数的学习的更多相关文章

  1. Loadrunner 关联 web_custom_request综合实例

    Loadrunner 关联 web_custom_request综合实例 Loadrunner 关联web_custom_request,针对自带的订票系统的一个综合实例,相信看了本文大家对学习loa ...

  2. Loadrunner关联取参及设置检查点

    Loadrunner关联取参及设置检查点: 获取post的响应值当作参数存储,要在此post请求之上添加 web_reg_save_param("sign", "LB=m ...

  3. [ZZ] 多领域视觉数据的转换、关联与自适应学习

    哈工大左旺孟教授:多领域视觉数据的转换.关联与自适应学习 http://blog.sciencenet.cn/home.php?mod=space&uid=3291369&do=blo ...

  4. loadrunner 关联匹配多个值

    loadrunner 关联获取从服务器返回相关值,如果需要把所有匹配的值都获取并且把这些值打印出来,怎么做呢? 1.首先要把把所有的匹配值都保存起来,需要在关联函数里面多传递一个参数:"Or ...

  5. 品味性能之道<八>:Loadrunner关联技巧与字符处理

    一.概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了.当然在关联之后我们还需要一些简单的字符处理,用以生成 ...

  6. LoadRunner关联之学习笔记

    去银行办业务,进银行的门,大堂经理给你一张业务号,拿着这张业务号,去柜台办理业务.--录制下来 第二天又去银行,还是拿着这张业务号,去柜台办理业务,柜员就不理你了,因为这张业务号是昨天的.--回放过程 ...

  7. Loadrunner关联

    学习LoadRunner之关联(二) Lr学习之关联-随机删除一行数据和全部删除数据 录制一个系统,我录制的是一个交通方面的系统,登陆到系统里面,查询车牌颜色,将其中一条数据删除. "Nam ...

  8. LoadRunner中winsocket协议学习

    首先让我们先看一下loadrunner- winsock 函数 一览表:        lrs_accept_connection 接受侦听套接字连接 lrs_close_socket 关闭打开的套接 ...

  9. loadrunner关联——对服务器返回的数据选择性提交

    在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使 ...

随机推荐

  1. Pregel 消息传递机制

  2. linux 下安装mysql5.7.17

    安装前的环境准备 linux 环境准备 内核参数建议值 1.调整最大文件数限制 直接执行 ulimit -n 65535 或写入/etc/sysctl.conf  重启后生效 2.修改IO 调度器设置 ...

  3. HashMap是不是有序的?

    不是有序的. 有没有有顺序的Map实现类? 有TreeMap和LinkedHashMap. TreeMap和LinkedHashMap是如何保证它的顺序的? LinkedHashMap 是根据元素增加 ...

  4. Eclipse+Marven + spring mvc 新建一个 Hello world 项目

    1. 打开Eclipse,菜单 File->New->Marven Project.               2. 点击 Next,                3. 选择 marv ...

  5. 使用Git 上传文件到云端(版本库)

    第一步:本地初始化Git版本库 git init 第二步:链接码云(云端) git remote add orgin "你的远程仓库地址"(复制链接后结尾是.git,如果没有记得加 ...

  6. Android SDK Download

    { https://www.androiddevtools.cn/ }

  7. 使用CGIHTTPServer搭建简单网站

    目录 一.前提准备 二.搭建web网站 如何快速搭建web网站?这个问题对于我这样的小白来说简直就是一脸懵逼毫无头绪.在学习python的过程接触到了 CGI 编程,至于CGI是什么?怎么运行的?这我 ...

  8. 归并排序c语言

    void mergeAdd(int arr[], int left, int mid, int right, int *temp){ int i = left; ; int k = left;//临时 ...

  9. bzoj1293题解

    [题意分析] 给你一条有n个点的数轴,每个点属于一个种类,总共有k个种类.求一段最短的线段,使对于每个种类,这段线段上有至少一个点属于它. [算法分析] 1.对于50%的数据,N≤10000 对于每一 ...

  10. 2018-06-05(thinking in java)

    1:类只能有2种访问权限,一种是不写访问权限:默认包访问权限,另一种是public.且类只能有一个pubic 2:方法有4种访问权限,pubic(都可以访问),protexted(继承访问权限),pr ...