Loadrunner脚本读取 XMl 文件
Loadrunner脚本读取 XMl 文件
性能测试工程师要懂代码么?答案是必须的,好多测试员认为在 loadrunner 中编写脚本很难很牛 X 。 好多人认为 loadrunner 只支持 C 语言(包括我之前也一直这么认为),因为 loadrunner 默认的脚本是 C 语言的,其实它支持目前所有主流的语言,如: Java User 、 VB User 、 VB script User 、 Javascript User 、 Mmicrosoft .NET 等,总有一款适合你的吧,最起码 C 语言是必修课吧。
为了测试方便,下面用 C 语言来实现读取 XML 文件,然后通过读取的值进行比较判断。
1. 运行 Virtual User Generator

2. 新建 C User (此代码可用于 webservices )保存为 b-3

3. 在 D 盘新建 test.xml 文件,内容如下
<employee>
<id>[0]</id>
<name>{2}</name>
<add>beijing</add>
<age>20</age>
</employee>
4. 在 action 中编写读取 xml 代码

5. 将下面代码复制到 Action 中的文件中,即可测试 .

//*********************** 代码开始 *********************
#define filePath "D:\\test.xml" // 定义文件的路径
int lr_loadXml_strcmp(); // 申明读取 xml 的函数
int * call_webservices(char * opt1,char *opt2);
char *tmpVar="[0]"; // 申明一个全局的临时变量指针
char *param1="a=3"; // 申明调用 webservices 的第一个参数指针
char *param2="b=3"; // 申明调用 webservices 的第二个参数指针
int *p_call_webservices;
//
Action() // 执行的入口
{
p_call_webservices=call_webservices( param1, param2); // 将函数交给指针
if(lr_loadXml_strcmp()==0) // 返回不相等的比较
{
lr_log_message(" 比较正确,请进行业务处理 ");
//p_call_webservices; // 需要一个 webservices 提供两个参数进入加运算
}
else
{
lr_log_message(" 没有找到相关的处理请求 ");
}
return 0;
}
// 下面这个函数,只是为了演示参数可以指针传递
int * call_webservices(char * opt1,char *opt2)
{
int j=0;
for (j=0;j<10;j++) {
web_service_call( "StepName=add_103",
"SOAPMethod=MyServiceImplService|MyServiceImplPort|add",
"ResponseParam=response",
"Service=MyServiceImplService",
"ExpectedResponse=SoapResult",
"Snapshot=t1392023302.inf",
BEGIN_ARGUMENTS,
opt1, //webservice 第一个参数, a=3
opt2,//webservice 第一个参数, b=3
END_ARGUMENTS,
BEGIN_RESULT,
"addResult=Param_addResult", // 返回值 a+b 的值
END_RESULT,
LAST);
lr_log_message("dn");
}
return 0 ;// 暂时返回 0
}
int lr_loadXml_strcmp()
{
long fp;
int total = 0;
int readbufsize = 0;
int count = 0;
int i = 0;
int NumOfReadbuf_1 = 0;
int NumOfReadbuf_2 = 0;
int NumOfReadbuf_3 = 0;
int NumOfReadbuf_4 = 0;
int result=0;
char *readbuf;
char *file = filePath;
// 读取 XML 文件
if ( (fp = fopen(file, "r")) == NULL)
{
lr_message("open logfile failed!\n");
return -1;
}
// 申请 readbuf
readbuf = (char*) calloc(50, sizeof(char));
if (readbuf == NULL)
{
lr_message("Insufficient memory available");
return -1;
}
// 循环读取文件
while(!feof(fp))
{
// 扩展缓冲区
if( readbufsize - total <= 10 )
{
readbufsize += 50;
readbuf = (char*) realloc(readbuf, readbufsize);
}
count = fread(readbuf + total, sizeof(char), 10, fp);
total += count;
}
// 关闭文件句柄
fclose(fp);
// 修改 readbuf 内存值
readbuf = (char*) realloc(readbuf, readbufsize+1);
*(readbuf+total) = '\0';
// 保存参数
lr_save_string(readbuf,"readbuf_param");
// 读取记录
NumOfReadbuf_1 = lr_xml_get_values("XML={readbuf_param}",
"ValueParam=id",
"Query=/employee/id",
"SelectAll=yes",
LAST);
NumOfReadbuf_2 = lr_xml_get_values("XML={readbuf_param}",
"ValueParam=name",
"Query=/employee/name",
"SelectAll=yes",
LAST);
NumOfReadbuf_3 = lr_xml_get_values("XML={readbuf_param}",
"ValueParam=add",
"Query=/employee/add",
"SelectAll=yes",
LAST);
NumOfReadbuf_4 = lr_xml_get_values("XML={readbuf_param}",
"ValueParam=age",
"Query=/employee/age",
"SelectAll=yes",
LAST);
lr_log_message("%s",lr_eval_string("{id_1}")); // 将 xml 中的第一个 id 节点值转为字符串并打印
/*lr_log_message("%s",lr_eval_string("{name_1}"));
lr_log_message("%s",lr_eval_string("{add_1}"));
lr_log_message("%s",lr_eval_string("{age_1}"));
*/
lr_save_string(lr_eval_string("{id_1}"),"getXmlValue");// 将 xml 中第一个 id 节点 {id_1} 的值给 getXmlValue
// 将变量保存为参数 ,tmp 为变量
lr_output_message(lr_eval_string("{getXmlValue}"));
result=strcmp(tmpVar,lr_eval_string("{id_1}"));
if(result==0)
{
lr_output_message(" 成功取得了数据 ");
}else
{
lr_output_message(" 没有成功取得了数据 ");
}
return result; // 返回比较后的值 0 成功
}
//************************* 代码结束
6.run 运行后,控制台显示读取的 xml 数据

Loadrunner脚本读取 XMl 文件的更多相关文章
- IE下JS读取xml文件示例代码
JS读取xml文件具体步骤为:创建DOM对象.加载xml文件(仅适用于IE)附示例代码,感兴趣的朋友可以参考下,希望对大家有所帮助使用javascript脚本读取xml文件,这里暂只考虑IE浏览器st ...
- Matlab中使用脚本和xml文件自动生成bus模块
帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- 读取xml文件报错:Invalid byte 2 of 2-byte UTF-8 sequence。
程序读取xml文件后,系统报“Invalid byte 2 of 2-byte UTF-8 sequence”错误,如何解决呢? 1.程序解析xml的时候,出现Invalid byte 2 of 2- ...
- C#读取XML文件的基类实现
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...
- C#读取XML文件的方法
先写一个xml文件: <?xml version="1.0" encoding="utf-8" ?> <bookste> <!-- ...
- Spring相关:jdom学习:读取xml文件
云课堂马士兵的spring2.5课程中提到的 用JDOM读取XML文件需先用org.jdom.input.SAXBuilder对象的build()方法创建Document对象,然后用Document类 ...
- 在C#中创建和读取XML文件
1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...
- Java获取路径方法&相对路径读取xml文件方法
(1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...
随机推荐
- bzoj 2599 [IOI2011]Race 点分
[IOI2011]Race Time Limit: 70 Sec Memory Limit: 128 MBSubmit: 4768 Solved: 1393[Submit][Status][Dis ...
- CentOS 下安装Mplayer播放器(转载)
一.准备工作 需要的安装包及下载地址:1.mplayer源代码包(MPlayer-1.0rc4.tar.bz2)下载:http://www.mplayerhq.hu/MPlayer/releases/ ...
- Spring filter和拦截器(Interceptor)的区别和执行顺序
转载自:http://listenup.iteye.com/blog/1559553 1.Filter过滤器只过滤jsp文件不过滤action请求解决方案 解决办法:在web.xml中将filter的 ...
- 【Android】Android之USB
[转载请注明出处] 首先介绍一个概念:USB Host and Accessory Android通过两种模式支持一系列的USB外围设备和Android USB附件(实现了Android附件协议的硬件 ...
- Java中主线程如何捕获子线程抛出的异常
首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: public void run(); 而所有的具 ...
- JDBC和Ibatis中的Date,Time,Timestamp处理
在此前,遇到过使用Ibatis操作Oracle时时间精度丢失的问题,昨天又遇到JDBC操作MySQL时间字段的问题,从网上看到各种式样的解释这些问题的博文/帖子,但多是雾里看花,不得要领. 理解JDB ...
- Quick-Cocos2dx-Community_3.6.3_Release 编译时libtiff.lib 无法解析
Quick-Cocos2dx-Community_3.6.3_Release 使用VS2012编译,报错: libtiff.lib lnk2001 无法解析的外部符号 ltod3 类似于上面这种,刚才 ...
- Angular2.0 基础: Form
对于Angular2.0 的Form表单中的隐藏和验证,个人觉得还是挺有意思的. 1.通过ngModel 跟踪修改状态与验证. 在表单中使用 ngModel 可以获得更多的控制权,包括一些常用的验证. ...
- 2017-2018-1 20179205《Linux内核原理与设计》第十周作业
<Linux内核原理与设计>第十周作业 教材17.19.20章学习及收获 1.在Linux以及所有unix系统中,设备被分为以下三种:块设备(blkdev)以块为单位寻址,通过块设备节点来 ...
- 从零开始PHP攻略(000)——关于WAMPServer集成环境
Apache.PHP和MySQL都可以用于多种操作系统和Web服务器的组合.本篇介绍在Windows下用WampServer环境包来搭建本地php环境. W:windows A:Apache M:My ...