测试需求:第一次访问 XX——互动接口时,会在返回的XML中有一个SessionToken的参数,之后每次访问都要带上SessionToken。
(图1 左边为WebService请求,右边为访问后的返回值)
以下是Loadrunner web_service_call代码,用来访问Webservice接口:
web_service_call( "StepName=INFICreateInterfactive_101",
"SOAPMethod=INFI_spcInterfactive_spcInfo_spcPoint|INFIInterfactiveInfoPoint|INFICreateInterfactive",
"ResponseParam=response",
"Service=INFI_spcInterfactive_spcInfo_spcPoint",
"ExpectedResponse=SoapResult",
"Snapshot=t1453862681.inf",
BEGIN_ARGUMENTS,
"Comments=测试",
"PointsType=1",
"InteractiveTime=01/14/2016 19:43:00",
"Points=100",
"WhetherCalPoints=1",
"SourceSystem={ra_SourceSystem}",
"RecordId={rand2}",
"InteractiveType=BCWG01",
"LoymemName=220017322",
"SourceSystemId={ra_SourceSystem}{rand2}",
"LoymemId=220017322",
"xml:UsernameToken="
"<UsernameToken>"
"<Text>"
"<string>INFI</string>"
"</Text>"
"</UsernameToken>",
"xml:PasswordText="
"<PasswordText>"
"<Text>"
"<string>INFI</string>"
"</Text>"
"</PasswordText>",
"xml:SessionType="
"<SessionType>"
"<Text>"
"<string>Stateless</string>"
"</Text>"
"</SessionType>",
END_ARGUMENTS,
BEGIN_RESULT,
END_RESULT,
LAST);
web_service_call之后有这个response的参数,用来存放返回值的内容(图1 右边内容)
得到response下一部就要把response中的SessionToken拿出来。
Loadrunner有自带解析XML文件函数:lr_xml_get_values
调用之前我们要查清楚SessionToken是在XML的哪个节目下的。
看图1右边内容,SessionToken的节点是:/SOAP-ENV:Envelope/SOAP-ENV:Header/siebel-header:SessionToken
所以应该这样子获取内容:
int NumOfReadbuf_1=0;
NumOfReadbuf_1== lr_xml_get_values("XML={response}",
"ValueParam=SessionToken", //使用SessionToken变量来存放SessionToken的值
"Query=/SOAP-ENV:Envelope/SOAP-ENV:Header/siebel-header:SessionToken", //要获取的SessionToken对应在哪个节点
"SelectAll=yes",
LAST);
lr_output_message("%s",lr_eval_string("{SessionToken_1}")); //日志中输出SessionToken第一个参数的值,如果XML中有多个SessionToken对应值可以SessionToken_2、SessionToken_3 获取。