我正在使用jmeter在我的服务器上执行负载测试。 在我的一个帖子请求中,我在响应中收到一个唯一的ID。 我需要在以下帖子请求中将此id作为参数发送。 我是jmeter的新手,不知道怎么做。 非常感谢帮助。
答案 0 :(得分:14)
如果需要将整个响应存储到变量中,请执行以下步骤:
将以下行放入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章节根据您的需要修改正则表达式
答案 1 :(得分:5)
您可以使用JMeter's Post-Processor Regular Expression Extractor从响应中提取所需的值。只需在其响应将包含所需值的采样器下添加此项。
在Reg表达式提取器中,您将定义变量名称(referenceName),RegularExpression,模板等。稍后您可以使用此变量中的值。要了解如何使用Reg表达式提取器,您可以参考以下教程。
答案 2 :(得分:5)
如果您确实需要将整个响应存储到变量中,请执行以下操作:
vars.put(" response",prev.getResponseDataAsString());
但是你很少需要使用整个响应,你应该避免使用它,在这种情况下,使用适合你的响应格式的Extractor要好得多:
答案 3 :(得分:0)
我知道这个问题很旧,但我同意@UBIK,您可能应该使用JSON提取器。我正在以每秒发送100个请求的负载测试进行工作,我需要在特定的JSON密钥中重用该值,因此我正在使用JSON提取程序并将值保存在.csv文件中,以供下一个请求。
这是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...")
这是我在从csv文件读取的其他请求中设置的CSV数据配置。 (以我为例,这些.jmx文件是使用jenkins自动化和参数化的)