我正在尝试为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
答案 0 :(得分:0)
您的脚本看起来或多或少都可以,因此问题似乎与${points}
JMeter变量有关。
如果您在Beanshell脚本之前的某处设置它 - 请仔细检查您定义它的位置,并使用Debug Sampler和View Results Tree Listener组合仔细检查预期值。
如果您不提取此${points}
变量,则需要在Beanshell PostProcessor之前执行此操作,即使用XPath Extractor配置为:
points
//points
并确保在Beanshell PostProcessor之前添加XPath Extractor 。
展望未来考虑使用JSR223 PostProcessor and Groovy language而不是Beanshell,它是更有效的脚本选项。