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

Post 如何在jmeter中的变量中保存响应,post,jmeter,performance-testing,load-testing,Post,Jmeter,Performance Testing,Load Testing,我正在使用jmeter在服务器上执行负载测试。 在我的一个post请求中,我在响应中收到一个唯一的id。 我需要在以下post请求中将此id作为参数发送。 我是jmeter的新手,不知道怎么做。 非常感谢您的帮助。您可以使用从响应中提取所需的值。只需将其添加到响应将包含所需值的采样器下 在Reg表达式提取器中,您将定义变量名(referenceName)、RegularExpression、template等。稍后您可以使用此变量中的值。要了解如何使用Reg表达式提取器,可以参考以下教程 如果需

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

您可以使用从响应中提取所需的值。只需将其添加到响应将包含所需值的采样器下

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


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

  • 添加为请求的子级,该请求返回您要查找的响应
  • 将以下行放入后处理器的“脚本”区域:

  • 如果需要,请将提取的值引用为
    ${response}

    请参阅JMeter中有关Beanshell脚本的详细信息


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

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

    如果您需要响应的一部分,而不是整个响应,您可以根据JMeter用户手册的章节根据需要修改正则表达式。如果您确实需要将整个响应存储到变量中,请执行以下操作:

  • 添加为请求的子级,该请求返回您要查找的响应
  • 将以下行放入“脚本”区域:
  • 变量put(“response”,prev.getResponseDataAsString())

  • 然后在需要时将此响应用作${response}
  • 但是您很少需要使用整个响应,并且应该避免使用大型响应,在这种情况下,最好使用适合您的响应格式的提取器:

    • 对于JSON
    • 用于HTML提取
    • 用于XML
    • 对于所有这些或任何文本格式

    我知道这个问题很老,但我同意@UBIK的观点,您可能应该使用JSON提取器。我正在处理一个每秒发送100多个请求的负载测试,我需要重用特定JSON键中的值,因此我使用JSON提取器并将值保存在.csv文件中,以供下一个请求使用


  • 这是将其写入.csv文件的Groovy脚本

  • def myRandomIds=新文件(“randomIds.csv”)
    myRandomIds可能与
    
    vars.put("response", new String(data));
    
     def myRandomIds = new File("randomIds.csv")
        myRandomIds << vars.get("id") + ","
        myRandomIds << System.getProperty("line.separator")
        log.info(vars.get("id") + " saved to randomIds.csv...")