我正在使用“带有CSV和SOAP / xml请求的Jmeter”。 我的测试在80个数据集中运行,并且CSV中的某些字段必须为空以用于测试问题。
我的JMeter构建: -ThreadGroup -CSV数据 -SOAP / XML -XPathExtractor -Outcome
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更换了varibles时:
<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>
系统告诉我“Long Amount with”“”是不可能的“而且我也不希望在我的系统中有一个带有”“空字符串的freeText2。
现在我的问题: 有什么方法可以得到一个适配器/处理程序/提取器......任何东西都可以将Request空字符串转换为空(不是Null,因为它会抛出一个NullPointerException),比如==&gt;
<attribute xsi:type="ns2:longType" name = "amount">
<value></value>
</attribute>
转换为
<attribute xsi:type="ns2:longType" name = "amount">
</attribute>
答案 0 :(得分:0)
如果我正确地提出了您的问题并且您需要删除空值,例如删除所有<value></value>
元素,则可以使用Beanshell轻松完成。
添加Beanshell Pre Processor 作为有问题的SOAP / XML-RPC请求的
将以下代码插入“脚本”区域:
String data = sampler.getXmlData();
data = data.replaceAll("<value></value>","");
sampler.setXmlData(data);
运行测试
Beanshell Pre Processor在请求之前执行,因此它将用空字符串替换所有出现的<value></value>
您可以参考How to use BeanShell: JMeter's favorite built-in component指南,了解有关在Bebehell中使用Apache JMeter的详细信息。