我正在使用JMeter对我的服务器进行负载测试。在其中一个POST请求中,我会在响应中收到一个唯一标识符。我需要将此ID作为参数发送到接下来的POST请求中。我对JMeter不熟悉,不知道如何处理。非常感谢您的帮助。
我正在使用JMeter对我的服务器进行负载测试。在其中一个POST请求中,我会在响应中收到一个唯一标识符。我需要将此ID作为参数发送到接下来的POST请求中。我对JMeter不熟悉,不知道如何处理。非常感谢您的帮助。
将以下行放入后处理器的“脚本”区域:
vars.put("response", new String(data));
需要时将提取的值引用为${response}
请参阅如何使用BeanShell:JMeter最喜爱的内置组件指南,了解有关JMeter中Beanshell脚本的更多信息
或者您也可以使用正则表达式提取器完成同样的操作,在这种情况下,相关配置将是:
response
(?s)(^.*)
$1$
如果您需要响应的一部分而不是全部响应,则可以根据需要修改正则表达式,如JMeter用户手册中的正则表达式章节所述
如果你确实需要将整个响应存储到一个变量中,请按照以下步骤操作:
vars.put("response", prev.getResponseDataAsString());
但是,你很少需要使用整个响应,并且对于大型响应来说应避免这样做。在这种情况下,更好的方法是使用适合响应格式的提取器:
我知道这个问题很老,但我同意@UBIK的观点,你应该使用JSON提取器。我正在处理一个每秒发送100多个请求的负载测试,并且需要重复使用特定JSON键中的值,因此我正在使用JSON提取器并将值保存在.csv文件中以供下一个请求使用。
这是编写它到.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自动化和参数化的)