小编典典

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

cxv

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

阅读 519

收藏
2020-09-01

共1个答案

小编典典

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

Beanshell预处理器 添加为有问题的SOAP / XML-RPC请求的子级

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

String data = sampler.getXmlData();
data = data.replaceAll("<value></value>","");
sampler.setXmlData(data);

运行测试

Beanshell预处理程序在请求之前执行,因此它将用空字符串替换所有出现的

您可以参考如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关将Beanshell与Apache JMeter一起使用的扩展信息。

2020-09-01