Jmeter在SOAP / xml请求中删除空字符串

时间:2014-07-30 15:42:19

标签: xml csv soap jmeter

我正在使用“带有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>

1 个答案:

答案 0 :(得分:0)

如果我正确地提出了您的问题并且您需要删除空值,例如删除所有<value></value>元素,则可以使用Beanshell轻松完成。

  1. 添加Beanshell Pre Processor 作为有问题的SOAP / XML-RPC请求的

  2. 将以下代码插入“脚本”区域:

    String data = sampler.getXmlData();
    data = data.replaceAll("<value></value>","");
    sampler.setXmlData(data);
    
  3. 运行测试

  4. Beanshell Pre Processor在请求之前执行,因此它将用空字符串替换所有出现的<value></value>

    您可以参考How to use BeanShell: JMeter's favorite built-in component指南,了解有关在Bebehell中使用Apache JMeter的详细信息。