最近更新列表
1.IBM的aix中安装jdk(7月21更新)
2.Linux(CentOS)中安装jdk (7月21更新)
3.Linux(CentOS)安装weblogic (7月22更新)
4.Aix系统中安装webLogic (7月22更新)
5.IBM实体机aix中创建weblogic域 (7月23更新)
6.linux中通过VNC创建weblogic域 (7月23更新)
7.在RedHat 5下安装Oracle 10g详解 (7月24更新)
8.linux启动oracle实例 (7月24更新)
9.linux中通过VNC创建oracle实例及网络监听 (7月25更新)
10.linux中关闭ip6的方法 (7月25更新)
11.Jconsole、jvisualvm工具介绍
12.Soupui调用webservies帮助文档
13.Loadrunner 调用Webservice接口测试优化
14.Loadrunner脚本读取XMl文件
15.使用Xmanager远程Aix系统
16.Xmanager图形化远程到aix系统
17.将普通jar文件打包成osgi bundle的方法
18.代码检查规范Checkstyle配置
19.Webloigc 11g配置集群帮助文档
20.Activemq集群配置文档
21.Apache2.2+tomcat6集群配置
22.修改计算机名导致oracle实例不能启动的解决方案
23.导入带有oracle安装程序的虚拟机需要的配置
24.给tomcat和weblogic启动窗口设置标题
25.Tomcat配置下载服务器
26.win8下开启虚拟机hyper-v功能
27.windows、linux、aix查询端口号被哪个程序占用
28. linux下递归的改变目录权限
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文件中的数据
Loadrunner相关脚本, Loadrunner相关脚本, Loadrunner相关脚本, Loadrunner相关脚本,
介绍Loadrunner脚本开发编写规范的书
loadrunner脚本参考 供新人学习交流
LoadRunner脚本中的乱码问题以及解决办法 LoadRunner脚本中的乱码问题以及解决办法.doc
增删改的loadrunner脚本方案.txt 公司用的
HP LoadRunner 软件 — 配置、脚本编写和执行的提示与技巧
如何进行loadrunner语言的脚本的编写
如何在 LoadRunner 脚本中做关联
LoadRunner脚本录制常见问题
LoadRunner脚本录制及代理录制方法+问题解决及注意点常用设置,fiddler+lr12生成LR11脚本方法步骤。(全文本人实践整理,解决几乎所有http协议不能录制问题)
使用loadrunner过程中,遇到脚本录制为空的现象,找到的一些问题的原因,仅供参考
loadrunner在win7上脚本录制与调试遇到的问题
LoadRunner脚本编写
详细介绍 为什么要在LoadRunner中进行关联 如何在LoadRunner 脚本中进行关联
loadrunner脚本录制, LR录制网页上下载附件
要允许负载生成器参与到方案中,请选中"Enable load generator to take part in the scenario"选项。 单击"More"(更多)按钮可以展开该对话框并显示"Group Information"(组信息)选项卡,显示负载生成的一些基本...
LoadRunner 脚本编程规范,很值得测试人学习。
LoadRunnr 测试脚本运行或压测一段时间后,会出现很多无用的日志数据等,导致脚本很大,很多新人不知道删除哪些文件,这里我根据测试过程中发现会增大脚本的文件进行了归纳和整理,执行批量删除;使用时只需要将该...