`
zz563143188
  • 浏览: 2264282 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
博客专栏
77fc734c-2f95-3224-beca-6b8da12debc8
编程工具介绍
浏览量:576441
D9710da2-8a00-3ae6-a084-547a11afab81
Spring Mvc实战(...
浏览量:1084554
D3f88135-07de-3968-a0f0-d2f13428c267
项目开发经验
浏览量:1651066
社区版块
存档分类
最新评论

Loadrunner脚本读取XMl文件

阅读更多

 

最近更新列表

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下递归的改变目录权限

29.Apache的配置虚拟目录

Loadrunner脚本读取XMl文件

 

性能测试工程师要懂代码么?答案是必须的,好多测试员认为在loadrunner中编写脚本很难很牛X好多人认为loadrunner只支持C语言(包括我之前也一直这么认为),因为loadrunner默认的脚本是C语言的,其实它支持目前所有主流的语言,如:Java UserVB UserVB script User Javascript UserMmicrosoft .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数据

 

 

 

 

  • 大小: 11.7 KB
  • 大小: 36.1 KB
  • 大小: 24.5 KB
  • 大小: 29.3 KB
  • 大小: 26.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics