Jmeter在SOAP / xml请求中删除空字符串
问题内容:
我正在使用“带有CSV和SOAP / xml请求的Jmeter”。我的测试在80个数据集中运行,并且CSV中的某些字段对于测试问题必须为空。
我的JMeter构建:-ThreadGroup -CSV数据-SOAP / XML -XPathExtractor-结果
CSV,例如矩阵表,多行和多列。
SOAP / XML
...
<attribute xsi:type="ns2:stringType" name = "freeText2">
<value>${freeText2}</value>
</attribute>
<attribute xsi:type="ns2:longType" name = "amount">
<value>${amount}</value>
</attribute>
...
我的问题:当Jmeter替换了变量时:
<attribute xsi:type="ns2:stringType" name = "freeText2">
<value>This is my free Text</value>
</attribute>
<attribute xsi:type="ns2:longType" name = "amount">
<value>455667</value>
</attribute>
当某些为空时一切都很好
<attribute xsi:type="ns2:stringType" name = "freeText2">
<value></value> ==>interpreted as STRING
</attribute>
<attribute xsi:type="ns2:longType" name = "amount">
<value></value> ==>interpreted as STRING
</attribute>
系统告诉我“不可能有大量的”,并且我也不想在我的系统中包含带有“”的空字符串的freeText2。
现在我的问题是:有没有办法使适配器/处理程序/提取器…要使请求的空字符串转换成任何东西(不是Null,因为它会抛出NullPointerException),就像==>
<attribute xsi:type="ns2:longType" name = "amount">
<value></value>
</attribute>
转换成
<attribute xsi:type="ns2:longType" name = "amount">
</attribute>
问题答案:
如果我正确地回答了您的问题,并且您需要消除空值的出现(例如删除所有<value></value>
元素),则可以使用Beanshell轻松完成。
-
将Beanshell预处理器 添加 为有 问题的SOAP / XML-RPC请求 的子代
-
将以下代码插入“脚本”区域:
String data = sampler.getXmlData();
data = data.replaceAll("<value></value>","");
sampler.setXmlData(data);
- 运行测试
Beanshell预处理程序在请求之前执行,因此它将<value></value>
用空字符串替换所有出现的
您可以参考如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关将Beanshell与Apache JMeter一起使用的扩展信息。