您的位置:首页 > 其它

loadrunner 学习笔记--Web Services

2010-06-17 22:05 225 查看
使用loadrunner测试Web Services的程序大致可以使用两种方法,分别为web_service_call()和soap_request()。两者的使用很相识,我们录制时都使用Web Services的协议。下面分别介绍一下使用方法:

[b]一、web_service_call()[/b]使用步骤如下:

1、保存WSDL文件。在IE中打开Web Services的地址,并加上“?wsdl”。比如:“http://192.168.4.112:8082/EDASer ... neService.asmx?wsdl”。然后将打开的XML文件另存为扩展名为".wsdl"的文件。如下图





2、在loadrunner中导入刚才保存的WSDL文件,如下图





3、增加调用函数,如下图





4、完成后将自动生成以下代码。

web_service_call( "StepName=RunService_101",
"SOAPMethod=ServiceEngineService|ServiceEngineServiceSoap|RunService",
"ResponseParam=response",
"Service=ServiceEngineService",
"ExpectedResponse=SoapResult",
"Snapshot=t1273650512.inf",
BEGIN_ARGUMENTS,
"xml:inDataBuf="
"<inDataBuf>"
"<serviceName>2307</serviceName>"
"<serviceType>3</serviceType>"
"<pageNo></pageNo>"
"<sessionID></sessionID>"
"<xmlData><DataSet></xmlData>"
"</inDataBuf>",
END_ARGUMENTS,
BEGIN_RESULT,
"RunServiceResult=Param_RunServiceResult",
END_RESULT,
LAST);

lr_log_message("result = %s", lr_eval_string("{Param_RunServiceResult}"));
--可以输出返回值

[b]二、soap_request(),[/b]使用步骤如下:

1、定义SOAP REQUEST FILE。在IE中打开Web Services的页面,比如:http://192.168.4.112:8082/EDASer ... .asmx?op=RunService。IE中将显示这个文件的信息,复制保存为XML文件。如图下图:





2、导入刚才定义的XML文件。



3、导入后自动以下代码。

soap_request("StepName=SOAP Request",
"URL=http://192.168.4.112:8082/EDAService/ServiceEngineService.asmx",
"SOAPEnvelope="
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
"<soap12:Body>"
"<RunService xmlns=\"http://192.168.4.112/\">"
"<inDataBuf>"
"<serviceName>2307</serviceName>" --入参需要改成自己需要的值
"<serviceType>3</serviceType>" --入参需要改成自己需要的值
"<pageNo></pageNo>"
"<sessionID></sessionID>"
"<xmlData></xmlData>"
"</inDataBuf>"
"</RunService>"
"</soap12:Body>"
"</soap12:Envelope>",
"SOAPAction=RunService",
"ResponseParam=response",
"Snapshot=t1273722181.inf",
LAST);


4、在刚才自动生成的代码前,增加header信息。需要增加的内容见步骤1里的截图。“Content-Length”不需要加。本例中我们增加的代码为:

web_add_header("POST",
"/EDAService/ServiceEngineService.asmx HTTP/1.1");
web_add_header("Host",
"192.168.4.112");
web_add_header("Content-Type",
"application/soap+xml; charset=utf-8");


这样2种方式就介绍完了。

[b]补充说明:[/b]

1、如果入参的字符串需要使用“<”或“>”,则必须传递“& l t ;”或“& g t ;(这几个字符需要去空格)

2、如果WEB SERVICES返回的是XML文件,则可以使用lr_xml_get_values来获取。比如:

int NumOfValues;
NumOfValues= lr_xml_get_values("XML={response}", --response为soap_request函数的返回值
"ValueParam=OutputParam", --定义lr_xml_get_values的返回值
"Query=/soap:Envelope/soap:Body/HelloWorldResponse/HelloWorldResult", --XML的节点名称,需要包含父节点的名称,并用"/"隔开。
"SelectAll=yes", LAST);

for ( i = 0; i < NumOfValues; i++) { /* Print multiple values of OutputParam */ --输出刚才获取的XML的值

sprintf (buf, "{OutputParam_%d}",i+1);
lr_output_message("result = %s",lr_eval_string(buf));

re = strncmp(lr_eval_string(buf),string1,85);
lr_output_message("return : %d",re);
}


3、可以切换到TREE界面查看我们定义的函数的请求,以及服务器的返回值。





//




function ratevalveimg(rate,ratevalveset){ valveimg = '';if(rate) {image = rate > 0 ? 'templates/special/images/agree.gif' : 'templates/special/images/disagree.gif';var ratevalve = ratevalveset.split(",");for(i = 0; i < ratevalve.length; i++) { if(Math.abs(rate)>ratevalve[i]){ valveimg += '

';}else{ break;}}}return valveimg;}
// ]]>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: