jmeter 3.1中使用unescape字符的xml响应

时间:2017-09-29 09:31:08

标签: jmeter

我对Jmeter(3.1)有点新意,但我有一个很大的任务要完成它。

我已经配置jmeter来达到100万个http请求,一切都很好

我进入日志文件的xml响应是使用转义字符,但我想要的日志文件需要用unescape字符保存,

<httpSample ng="41" na="41">   <responseData class="java.lang.String">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;methodResponse&gt;&lt;params&gt;&lt;param&gt;&lt;value&gt;&lt;struct&gt;&lt;member&gt;&lt;name&gt;avail ableServerCapabilities&lt;/name&gt;&lt;value&gt;&lt;array&gt;&lt;data&gt;&lt;value&gt;&lt;i4&gt;536871488&lt;/i4&gt;&lt;/value&gt;&lt;value&gt;&lt;i4&gt;8&lt;/i4&gt;&lt;/value&gt;&lt;/data&gt;&lt;/array&gt;&lt;/v alue&gt;&lt;/member&gt;&lt;member&gt;&lt;name&gt;negotiatedCapabilities&lt;/name&gt;&lt;value&gt;&lt;array&gt;&lt;data&gt;&lt;value&gt;&lt;i4&gt;0&lt;/i4&gt;&lt;/value&gt;&lt;/data&gt;&lt;/array&gt;&lt;/value&gt; &lt;/member&gt;&lt;member&gt;&lt;name&gt;originTransactionID&lt;/name&gt;&lt;value&gt;&lt;string&gt;1606456&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&lt;member&gt;&lt;name&gt;responseCode&lt;/name&gt;&lt;value& gt;&lt;i4&gt;139&lt;/i4&gt;&lt;/value&gt;&lt;/member&gt;&lt;/struct&gt;&lt;/value&gt;&lt;/param&gt;&lt;/params&gt;&lt;/methodResponse&gt;</responseData> </httpSample>

我想要的是

<methodResponse><params><param><value><struct><member><name>availableServerCapabilities</name><value><array><data><value><i4>536871488</i4></value><value><i4>8</i4></value></data></array></value></member><member><name>currency1</name><value><string>TZS</string></value></member><member><name>dedicatedAccountDeleteInformation</name><value><array><data><value><struct><member><name>dedicatedAccountID</name><value><i4>1402</i4></value></member><member><name>dedicatedAccountUnitType</name><value><i4>6</i4></value></member><member><name>dedicatedAccountValue1</name><value><string>5368535040</string></value></member><member><name>expiryDate</name><value><dateTime.iso8601>99991231T12:00:00+0000</dateTime.iso8601></value></member><member><name>startDate</name><value><dateTime.iso8601>00000101T12:00:00+0000</dateTime.iso8601></value></member></struct></value></data></array></value></member><member><name>negotiatedCapabilities</name><value><array><data><value><i4>0</i4></value></data></array></value></member><member><name>originTransactionID</name><value><string>1606684</string></value></member><member><name>responseCode</name><value><i4>0</i4></value></member></struct></value></param></params></methodResponse>

请帮忙!

顺便说一句,如何将originTransactionID和responseCode保存到csv文件中。

请点亮它

1 个答案:

答案 0 :(得分:1)

您无法“按原样”保存XML响应,因为以下5个字符需要在XML文件中进行转义:

  1. "
  2. '
  3. <
  4. >
  5. &
  6. 因此,如果您只需保存originTransactionIDresponseCode,则可以执行以下步骤:

    1. 添加XPath Extractor作为返回上述XML
    2. 的请求的子代
    3. 按如下方式配置:

      • 参考名称:originTransactionID
      • XPath查询://member/name[text()='originTransactionID']/../value/string/text()
    4. 添加另一个XPath Extractor并将其配置为:

      • 参考名称:responseCode
      • XPath查询://member/name[text()='responseCode']/../value/i4/text()
    5. 将下一行添加到 user.properties 文件(位于JMeter安装的“bin”文件夹中)

      jmeter.save.saveservice.output_format=csv
      sample_variables=originTransactionID,responseCode
      
    6. 下次运行测试时,您会在.jtl结果文件中看到2个额外的列,它们将为每个请求保留originTransactionIDresponseCode个值
    7. 参考文献: