无法使用Jmeter中的Beanshell Postprocessor在CSV结果文件中打印SOAP响应参数?

时间:2017-05-30 00:59:52

标签: jmeter beanshell

我正在尝试为WSDL soap服务创建脚本,我的要求是我想使用Beanshell Postporcessor将点响应输出参数值打印到csv结果文件中。

以下是SOAP的响应。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <CardResponse xmlns="http://service.clp.eks.com">
         <out>
            <birthDate xmlns="http://wsform.clp.eks.com">05-04-00</birthDate>
            <cardno xsi:nil="true" xmlns="http://wsform.clp.eks.com"/>
            <customerName xmlns="http://wsform.clp.eks.com">krishna singhji</customerName>
            <flag xmlns="http://wsform.clp.eks.com">TRUE</flag>
            <memberLevel xsi:nil="true" xmlns="http://wsform.clp.eks.com"/>
            <points xmlns="http://wsform.clp.eks.com">**500.0**</points>
            <reason xsi:nil="true" xmlns="http://wsform.clp.eks.com"/>
         </out>
      </CardResponse>
   </soap:Body>
</soap:Envelope>

我的Beanshell脚本是:

import java.io.File;
import org.apache.jmeter.services.FileServer;

CardNo =vars.get("cardno");

Result = "FAIL";
Response = prev.getResponseDataAsString();

if(Response.contains("TRUE"))
    Result = "PASS";
Points = vars.get("points");

f = new FileOutputStream("F:\\Java_Applications\\apache-jmeter-3.1\\bin\\CardsResults.csv",true);
p=new PrintStream(f);

this.interpreter.setOut(p);

p.println(CardNo + "," + Points + "," + Result);
f.close();

运行TestPlan后,我的结果文件没有显示点值并显示为空值,请帮我解决此问题.ASAP

1 个答案:

答案 0 :(得分:0)

您的脚本看起来或多或少都可以,因此问题似乎与${points} JMeter变量有关。

如果您在Beanshell脚本之前的某处设置它 - 请仔细检查您定义它的位置,并使用Debug SamplerView Results Tree Listener组合仔细检查预期值。

如果您不提取此${points}变量,则需要在Beanshell PostProcessor之前执行此操作,即使用XPath Extractor配置为:

  • 参考名称:points
  • XPath查询://points

XPath Extractor Configuration

XPath Tester Demo

并确保在Beanshell PostProcessor之前添加XPath Extractor

展望未来考虑使用JSR223 PostProcessor and Groovy language而不是Beanshell,它是更有效的脚本选项。