一、为什么关联数据库
很多业务场景中,请求之间是有依赖关系的,后一个请求依赖于前一个请求的结果,因此需要在两个请求之间建立关联。
比如:只查询第3个学院信息,只返回第三个学院的信息,只运行一次脚本。
解决思路:1,查询所有学院信息---请求01
2,从第一步的结果中提取第三个学院的id。肉眼提取--->自动提取。
3,查询指定的第3个学院。---请求02
二、什么是关联
1,所谓的关联,就是从请求01的“响应结果”中,自动获取某个数据,自动传递给请求02。简言之,就是第一个请求的响应数据,要传递给第二个请求使用,两个请求之间产生了相关联系,这就叫做关联。
2,关联所起的作用,就是上一点中解决方案中的第2步。
三、怎样关联
(一)数据库查询结果再处理
1.创建数据库直连请求
2.填写查询语句
每一行的数据,就是这个变量的一个元素,获取第n个元素的形式是:${name_n}
数组类似于python中的列表或者元组,但是数组的元素下标从1开始
3.创建第二个请求,使用第二步提取的数据作为参数值
4.运行,查看结果
拓展:返回多字段的响应报文,每个字段的所有数据,可以存放在不同的变量中,按列依次存放,变量名之间使用逗号分隔。
(二)正则表达式提取器
(1)相关知识
元字符:.(点) :匹配除换行符(n、r)之外的任何单个字符
限定符:
*(星号):匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。
?(问号):匹配前面的子表达式零次或一次。例如,"does?" 可以匹配 "doe" 或 "does"
贪婪模式:尽可能多的匹配文字(默认模式)
非贪婪模式:后面加上一个?(问号)就可以实现非贪婪或最小匹配
分组捕获:对匹配结果进行再处理,从匹配结果中提取想要的字符串,常用于代码或程序中获取指定字符串。
(2)正则表达式提取器的基本设置
注意:
①基于同一个请求可以添加多个正则表达式提取器
②正则表达式的编写,可以有多个括号进行提取
③变量名存储的,实际上是模块中的所有内容
(3)应用步骤
①构建jmeter脚本,创建第一个请求,获取响应报文纯文本
②分析响应报文,确定提取目标的特征
③编写正则表达式(3步)(需要基于响应报文的纯文本格式)
④添加正则表达式提取器
⑤设置正则表达式提取器的属性
⑥创建第二个请求,引用关联变量
⑦运行脚本,实现关联
(4)扩展
匹配数字是非负数,变量引用形式说明:
变量名_g:提取范围的个数,g为group的缩写
变量名_g0:返回的匹配结果
变量名_gN:第N个提取范围的内容
变量名:存储的是指定匹配结果的指定提取范围内的内容-模板中的内容
匹配数字为-1,变量引用形式说明:
变量名_n_gN:n---第n个匹配结果,N---第N个提取范围(第几个括号)
变量名_n_g:每个匹配结果中有几个提取范围
变量名_matchNr:一共有几个匹配结果
变量名:取的是默认值
正则表达式在线测试网站:正则表达式在线测试
(三)xpath提取器(适用于响应报文是HTML格式)
jmeter中实现从HTML响应报文中提取需要数据的一种元件,这个元件属于后置处理器。
作用:实现数据的提取和传递
操作步骤:
(1)基于要提取的请求取样器,添加后置处理器-xpath提取器
(2)设置xpath的属性
(3)后续请求中引用变量
(4)注释说明:
一定要勾选Use Tidy
xpath可手写也可f12获取,获取网页title为: //title
匹配数字:0:随机; -1:返回所有的匹配结果
${变量名_n}:第n个匹配结果
${变量名}:第1个匹配结果
缺省值:xpath找不到内容或xpath提取器有错误发生时,变量的取值就是缺省值
xpath提取器可以添加多个
四、关联易错点
(1)数据库查询结果再处理的变量是一个数组变量,和其他关联方式综合运用,容易犯不加下标的错误
(2)变量引用和变量定义的名称一定要一致,如果变量传递发生错误,除了检查xpath或正则表达式是否编写正确,还需要检查变量名是否引用错误
(3)正则表达式提取器中,变量的引用形式择机使用,选择合适的引用形式
(4)如果参数化没有思路或思路不清晰,或直觉很绕,就需要考虑将思路细化,按部就班,导出参数化的变量、数据和方式。



