如何根据loadrunner中的测试数据更改输入soap请求?

时间:2017-01-12 07:20:06

标签: web-services soap performance-testing loadrunner vugen

我正在处理需要传递的一个soap请求,一个参数中的单个数据和第二个迭代中我们需要在同一输入请求中传递多个测试数据。请帮我如何根据测试数据更改输入soap请求,请查看以下针对单个和多个请求的soap请求。

单一请求:

<ReqDtls>
<vReqs>
  <amount>1.00</amount>
  <cardNo>8897654778999</cardNo>
</Reqs>
<cardType>caredit</cardType>
</ReqDtls>

多个请求:在相同的soap输入请求中,它正在从POS系统动态更改,但我想在loadrunner中执行。

<ReqDtls>
<vReqs>
  <amount>1.00</amount>
  <cardNo>8897654778999</cardNo>
</Reqs>
<vReqs>
  <amount>2.00</amount>
  <cardNo>890897654778999</cardNo>
</Reqs>
<cardType>caredit</cardType>
</ReqDtls>

vugen中的任何代码都可以从excel文件中传递这种类型的值以进行负载测试,请帮助如何执行此操作

1 个答案:

答案 0 :(得分:0)

这是您在编程中使用基础技能以及web_custom_request()(可能)发送您自己的自定义字符串的地方。

注意这里重复的部分

<vReqs>
  <amount>{amount_variable}</amount>
  <cardNo>{card_variable}</cardNo>
</Reqs>

您有一个已定义的标题

<ReqDtls>

一个已定义的页脚

<cardType>caredit</cardType>
</ReqDtls>

这现在变成了C中字符串连接的问题,并将变量转换为文字。考虑一个循环和低级sprintf()来完成这项任务。注意,变量声明不包含在代码片段

sprintf(mybigstring,"<ReqDtls>\r");
for (myloopcounter=1;myloopcounter<=mylooplimit;myloopcounter++)
{
     sprintf(mybigstring,
          "%s%s",
          mybigstring,
          lr_eval_string("<vReqs>\r<amount>{amount_variable}</amount>\r<cardNo>{card_variable}</cardNo>\r</Reqs>\r") );
     lr_advance_param("amount_variable");
     lr_advance_param("card_variable");
}
sprintf(mybigstring,"%s%s",mybigstring,"<cardType>caredit</cardType>\r</ReqDtls>");

以上是直接从noggin到屏幕,所以如果摆弄它可能需要一点,但它应该给你一个路径的想法。

获得字符串后,您可以根据需要在任何请求中使用它。