JMeter - 如何从响应数据中提取和验证特定元素和内容

时间:2018-05-23 09:42:51

标签: jmeter

来自我的回复数据:

<?xml version="1.0"?>
<PERSON>
  <NAME>Harry</NAME>
  <AGE>24</AGE>  
  <REMARKS></REMARKS>
  <DETAILS>
    <GENDER>MALE</GENDER>    
    <EYE_COLOR>BLUE</EYE_COLOR>
  </DETAILS>  
</PERSON>

<?xml version="1.0"?>
<PERSON>
  <NAME>Andrew</NAME>
  <AGE>4</AGE>  
  <REMARKS></REMARKS>
  <DETAILS>
    <GENDER>MALE</GENDER>    
    <EYE_COLOR>GREEN</EYE_COLOR>
  </DETAILS>
  <DETAILS>
    <WEIGHT>85KG</WEIGHT>    
    <HEIGHT>173CM</HEIGHT>
  </DETAILS>  
</PERSON>

.....等等

我希望提取整个第二序列并验证其内容

<?xml version="1.0"?>
<PERSON>
  <NAME>Andrew</NAME>
  <AGE>4</AGE>  
  <REMARKS></REMARKS>
  <DETAILS>
    <GENDER>MALE</GENDER>    
    <EYE_COLOR>GREEN</COLOR>
  </DETAILS>
  <DETAILS>
    <WEIGHT>85KG</WEIGHT>    
    <HEIGHT>173CM</HEIGHT>
  </DETAILS>  
</PERSON>

此响应可能非常大,任何帮助都将非常受欢迎。

2 个答案:

答案 0 :(得分:0)

您可以使用任何一种可用的后期处理器,例如&#34; CSS/JQuery Extractor&#34;,边界提取器,Regular Expression Extractor或JSR223等。所有这些都可以帮助您获得所需的变量/ s中的数据

但是,如果您只需要验证响应,那么您可以使用&#34; Assertion&#34;检查响应是否包含所需的值。

我已经使用了您的示例并获得了响应,并且只验证了第二个序列,如下所示: -

enter image description here 我刚刚复制了你的第二个序列代码并使用了#34; Add from Clipboard&#34;断言的选项。您可以根据需要对其进行修改。

断言消耗大量内存,在负载测试中应避免使用。

希望有所帮助

答案 1 :(得分:0)

  1. 添加Regular Expression Extractor作为请求的子项,返回上述响应
  2. 按如下方式配置:

    • 创建变量的名称:任何有意义的内容,即2ndPerson
    • 正则表达式:<PERSON>[\s\S]*?<\/PERSON>
    • 模板:$1$
    • 比赛号码:2

      JMeter Regular Expression

  3. 添加Response Assertion作为请求的子项

  4. 按如下方式配置:

    • 适用于:JMeter变量 - &gt; 2ndPerson_g0
    • 模式匹配规则:Equals
    • 模式:

      <PERSON>
        <NAME>Andrew</NAME>
        <AGE>4</AGE>  
        <REMARKS></REMARKS>
        <DETAILS>
          <GENDER>MALE</GENDER>    
          <EYE_COLOR>GREEN</EYE_COLOR>
        </DETAILS>
        <DETAILS>
          <WEIGHT>85KG</WEIGHT>    
          <HEIGHT>173CM</HEIGHT>
        </DETAILS>  
      </PERSON>
      

      JMeter Response Assertion

  5. 正则表达式演示:

    JMeter Regular Expression Demo