您的位置:

JMeter获取返回值里的数据详解

一、获取上个接口的数据

如果需要在JMeter中的一个请求中使用上一个请求的数据,需要使用JMeter内置的函数${__V()}。例如,第一个请求返回一个需要被使用的返回码,在参数化的第二个请求中需要使用返回的状态码。

在请求1的结果中提取返回码为变量code,可以使用如下代码:

//在请求1的结果中提取code,并且保存到v_code变量中
${__jexl3("${JMeterThread.last_sample_ok} == true" && "${__groovy(vars.get("RESPONSE_DATA").contains("code"),)}" ? vars.put("v_code", "${__groovy(vars.get("RESPONSE_DATA").substring(vars.get("RESPONSE_DATA").indexOf("code") + 7, vars.get("RESPONSE_DATA").indexOf("code") + 10))}") : "")}

在参数化的第二个请求中使用code变量,在路径中的需使用${__V()},如下:

/login/${__V(v_code)}

二、JMeter提取返回的所有数据

使用正则表达式可以提取出返回内容中的所有数据,从而用于后续的请求。如下代码可以提取名字字段的值,然后保存到变量name中。

//使用正则表达式提取名字,并且保存到v_name变量中
${__jexl3("${JMeterThread.last_sample_ok} == true" && "${__groovy(vars.get("RESPONSE_DATA").contains("name"),)}" ? vars.put("v_name", "${__groovy(vars.get("RESPONSE_DATA").replaceAll("(?s)<.*?>).*?(name.*?)=([^\"]*?).(.*?)()", "$2"))}") : "")}

三、JMeter获取数据库数据

JMeter可以通过JDBC请求获取数据库数据。首先,需要添加JDBC驱动程序,然后配置相关的数据库连接信息。在请求中添加一个JDBC请求并设置相应的查询和参数,其中参数可以使用JMeter函数进行动态设置,如下:

SELECT * FROM user WHERE name='${__P(user_name)}'

这里使用了用户定义的参数'user_name',并使用了${__P()}函数进行替换。

四、JMeter获取响应数据

在JMeter的HTTP请求中,可以使用“断言”功能来确定响应的正确性。断言可以使用各种不同的模式,包括请求头、正文或任何其他可用的信息。例如,使用响应字段断言,可以轻松地验证特定的值是否出现在返回的数据中:

响应字段:
引用名称: name
匹配规则: Equals
匹配表达式: "John"

这里的响应数据包含一个名字字段,使用了"断言"来验证该字段的值是否为"John"。