什么是关联
关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。
比如: 用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。
使用方法
1.新建两个方法,一个叫getCode,一个叫getMessage getCode永久返回1 然后根据返回的code请求getMessage方法,如果请求code为1返回true,反之返回false
@Controller
public class AliPayController {
@RequestMapping("getCode")
@ResponseBody
public String getCode(){
return "{\"name\":\"李四\",\"code\":\"1\"}";
}
@RequestMapping("getMessage")
@ResponseBody
public String getMessage(String code,HttpServletRequest request){
if("1".equals(code)&&"李四".equals(name)){
return "true";
}else{
return "false";
}
}
}
2.新建一个简单控制器,在简单控制器中添加两个http请求
3.第一个Http请求操作
我们需要在第一个Http Requst 中也就是getCode中新建一个正则表达式,把Response的值提取到变量中,提供给别的Http Request 使用
引用名称:其他地方引用时的变量名称,引用方法:${引用名称}
正则表达式:():括起来的部分就是要提取的。
.匹配任何字符串。
*出现任意次数。
?不要太贪婪,在找到第一个匹配项后停止。
模板:
表示使用提取到的第几个值:
$-1$:表示取所有值
$0$:表示取随机值
$1$:表示取第一个值
$2$:表示取第二个值
依次类推:$n$:表示取第n个值,这里不要对上面匹配的参数个数混淆,比如说正则匹配到两个 "name":"张三","name":"李四" 使用$1$来获取第一个name=张三,使用$2$来获取第二个name=李四,而不是说$2$拿到的是code=1这个值。
匹配数字:匹配数字:0 代表随机取值,1 代表全部取值
缺省值:如果正则表达式没有搜找到值,则使用此缺省值
${code_g1}代表取正则表达式匹配的第一个参数 也就是name值,${code_g2}代表取正则表达式匹配的第二个参数,也就是code值
4.第二个http请求操作
只需要添加一个图形结果和查看结果树就可以了,然后在参数的地方使用下面这种方式使用参数
5.测试
最后执行整个简单控制器,查看getMessage响应结果,证明有使用getCode函数的返回值