我正在使用“带有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轻松完成。
<value></value>
将Beanshell预处理器 添加 为有 问题的SOAP / XML-RPC请求 的子代
将以下代码插入“脚本”区域:
String data = sampler.getXmlData(); data = data.replaceAll("<value></value>",""); sampler.setXmlData(data);
Beanshell预处理程序在请求之前执行,因此它将<value></value>用空字符串替换所有出现的
您可以参考如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关将Beanshell与Apache JMeter一起使用的扩展信息。