LoadRunner的xml协议使用

转自:http://lht821008.blog.163.com/blog/static/4164786201141134535464/

思考曾经做过的一个黄金交易系统,里面针对后端进行报文发送,报文均是采用的xml格式,只不过传输和接受前后需要进行加解密,现在想来如果不是由于加解密包采用的是java,那我们完全可以采用LR的原生态C函数和XML协议函数做到更为优雅的测试脚本,利用LR的xml函数对整个xml报文实现动态封转。
函数:lr_xml_get_values
Action()
{
char *xml_input=
"<love>"
"<name_man>LHT</name_man>"
"<name_women>PHOEBE</name_women>"
"</love>";

lr_save_string(xml_input,"xml_param");

lr_xml_get_values("XML={xml_param}",
"ValueParam=OutputParam1",
"Query=/love/name_man",
LAST);

lr_xml_get_values("XML={xml_param}",
"ValueParam=OutputParam2",
"Query=/love/name_women",
LAST);

lr_message("husband is:%s",lr_eval_string("{OutputParam1}"));

lr_message("wife is:%s",lr_eval_string("{OutputParam2}"));

return 0;
}
//output

husband is:LHT
wife is:PHOEBE


函数lr_xml_set_values

Action1() {

char * xml_input =

"<acme_org>"

" <accounts_dept>"

"<employee>"

" <name>John Smith</name>"

"<cubicle>227</cubicle>"

"<extension>2145</extension>"

"</employee>"

"</accounts_dept>"

"<engineering_dept>"

"<employee>"

"<name>Sue Jones</name>"

"<extension>2375</extension>"

"</employee>"

"</engineering_dept>"

"</acme_org>";


int i,NumOfValues;

char buf[64];


lr_save_string(xml_input,"XML_Input_Param"); // Save input as parameter

lr_save_string("lht","ExtensionParam_1");

lr_save_string("phoebe","ExtensionParam_2");

lr_xml_set_values("XML={XML_Input_Param}",

"ResultParam=NewXmlParam",

"ValueParam=ExtensionParam",

"SelectAll=yes",

"Query=//extension",

LAST);


NumOfValues= lr_xml_get_values("XML={NewXmlParam}",

"ValueParam=OutputParam",LAST);


for ( i = 0; i < NumOfValues; i++) { /* Print the multiple values of MultiParam */

sprintf (buf,"Retrieved value %d : {OutputParam_%d}",i+1,i+1);

lr_output_message(lr_eval_string(buf));

}


lr_message("new xml is:%s",lr_eval_string("{NewXmlParam}"));

return 0;

}
//output:

Virtual User Script started
Starting action vuser_init.
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(11): "lr_xml_get_values" succeeded,1 match processed
Action.c(16): "lr_xml_get_values" succeeded,1 match processed
husband is:LHT
wife is:PHOEBE
Ending action Action.
Starting action Action1.
Action1.c(47): "lr_xml_set_values" succeeded,2 matches processed
Action1.c(60): "lr_xml_get_values" succeeded,2 matches processed
Action1.c(73): Retrieved value 1 : lht
Action1.c(73): Retrieved value 2 : phoebe
new xml is:<acme_org> <accounts_dept><employee> <name>John Smith</name><cubicle>227</cubicle><extension>lht</extension></employee></accounts_dept><engineering_dept><employee><name>Sue Jones</name><extension>phoebe</extension></employee></engineering_dept></acme_org> Ending action Action1. Ending iteration 1. Ending Vuser... Starting action vuser_end. Ending action vuser_end. Vuser Terminated.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇