如何将响应保存在jmeter中的变量中
Posted
技术标签:
【中文标题】如何将响应保存在jmeter中的变量中【英文标题】:How to save response in a variable in jmeter 【发布时间】:2016-03-31 12:36:49 【问题描述】:我正在使用 jmeter 在我的服务器上执行负载测试。 在我的一个帖子请求中,我在响应中收到了一个唯一的 ID。 我需要在以下发布请求中将此 id 作为参数发送。 我是 jmeter 新手,不知道该怎么做。 非常感谢您的帮助。
【问题讨论】:
how to capture dynamic values created using javascript in jmeter的可能重复 【参考方案1】:如果您需要将整个响应存储到变量中 - 请执行以下步骤:
-
将Beanshell PostProcessor 添加为返回您正在寻找的响应的请求的子项
将以下行放入 PostProcessor 的“脚本”区域:
vars.put("response", new String(data));
在需要时将提取的值引用为$response
请参阅How to Use BeanShell: JMeter's Favorite Built-in Component 指南以了解更多关于 JMeter 中的 Beanshell 脚本
或者,您可以对正则表达式提取器执行相同的操作,在这种情况下,相关配置将是:
参考名称:response
正则表达式:(?s)(^.*)
模板:$1$
如果您需要部分响应,而不是整个响应,您可以根据 JMeter 用户手册Regular Expressions 章节的需要修改正则表达式
【讨论】:
【参考方案2】:如果您确实需要将整个响应存储到变量中,请执行以下操作:
-
将JSR223 PostProcessor 添加为返回您正在寻找的响应的请求的子项
-
将以下行放入“脚本”区域:
vars.put("响应", prev.getResponseDataAsString());
-
然后将此响应用作 $response 在您需要的地方
但是您很少需要使用整个响应,并且应该避免使用 big ,在这种情况下,最好使用适合您响应格式的 Extractor:
JSON Extractor 用于 JSON CSS/JQuery Extractor 用于 html 提取 XPath Extractor 用于 XML Regular Expression Extractor 用于所有这些或任何文本格式【讨论】:
【参考方案3】:您可以使用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
【讨论】:
【参考方案4】:我知道这个问题很老,但我同意@UBIK 你应该使用 JSON 提取器。我正在使用每秒发送超过 100 个请求的负载测试,我需要重用特定 JSON 键中的值,因此我使用 JSON 提取器并将值保存在 .csv 文件中以供下一个请求。
extract the JSON
这是将其写入 .csv 文件的 Groovy 脚本
def myRandomIds = new File("randomIds.csv")
myRandomIds << vars.get("id") + ","
myRandomIds << System.getProperty("line.separator")
log.info(vars.get("id") + " saved to randomIds.csv...")
这是我在从 csv 文件读取的其他请求中设置的 CSV 数据配置。 (在我的例子中,这些 .jmx 文件是使用 jenkins 自动化和参数化的)
CSV data set config
【讨论】:
以上是关于如何将响应保存在jmeter中的变量中的主要内容,如果未能解决你的问题,请参考以下文章
如何自动保存 jmeter 摘要报告和其他图表(例如响应时间图)