如何在jmeter中保存变量的响应

时间:2015-12-25 13:48:23

标签: post jmeter performance-testing load-testing

我正在使用jmeter在我的服务器上执行负载测试。 在我的一个帖子请求中,我在响应中收到一个唯一的ID。 我需要在以下帖子请求中将此id作为参数发送。 我是jmeter的新手,不知道怎么做。 非常感谢帮助。

4 个答案:

答案 0 :(得分:14)

如果需要将整个响应存储到变量中,请执行以下步骤:

  1. 添加Beanshell PostProcessor作为请求的子项,返回您正在寻找的响应
  2. 将以下行放入PostProcessor"脚本"面积:

    vars.put("response", new String(data));
    
  3. 在必要时将提取的值称为${response}

    请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南,详细了解JMeter中的Beanshell脚本

  4. 或者您可以使用正则表达式提取器执行相同的操作,在这种情况下,相关配置将是:

    • 参考名称:response
    • 正则表达式:(?s)(^.*)
    • 模板:$1$

    如果您需要响应的一部分,而不是整个响应,您可以根据JMeter用户手册的Regular Expressions章节根据您的需要修改正则表达式

答案 1 :(得分:5)

您可以使用JMeter's Post-Processor Regular Expression Extractor从响应中提取所需的值。只需在其响应将包含所需值的采样器下添加此项。

在Reg表达式提取器中,您将定义变量名称(referenceName),RegularExpression,模板等。稍后您可以使用此变量中的值。要了解如何使用Reg表达式提取器,您可以参考以下教程。

https://docs.blazemeter.com/customer/portal/articles/1743642-using-regex-regular-expression-extractor-with-jmeter

答案 2 :(得分:5)

如果您确实需要将整个响应存储到变量中,请执行以下操作:

  1. 添加JSR223 PostProcessor作为请求的子项,返回您正在寻找的响应
  2. JSR223 Post Processor

    1. 将以下行放入"脚本"面积:
    2.   

      vars.put(" response",prev.getResponseDataAsString());

      1. 然后将此响应用作您需要的 $ {response}
      2. 但是你很少需要使用整个响应,你应该避免使用它,在这种情况下,使用适合你的响应格式的Extractor要好得多:

答案 3 :(得分:0)

我知道这个问题很旧,但我同意@UBIK,您可能应该使用JSON提取器。我正在以每秒发送100个请求的负载测试进行工作,我需要在特定的JSON密钥中重用该值,因此我正在使用JSON提取程序并将值保存在.csv文件中,以供下一个请求。

  1. extract the JSON


  2. 这是Groovy脚本,可将其写入.csv文件

 def myRandomIds = new File("randomIds.csv")
    myRandomIds << vars.get("id") + ","
    myRandomIds << System.getProperty("line.separator")
    log.info(vars.get("id") + " saved to randomIds.csv...")

  1. 这是我在从csv文件读取的其他请求中设置的CSV数据配置。 (以我为例,这些.jmx文件是使用jenkins自动化和参数化的)


  2. CSV data set config