一、Jmeter关联概述
1、概述
请求与请求之间存在数据依赖关系,一个请求的结果是另一个请求提交的数据,两个请求不再是独立存在的。
2、关联的一般步骤
- 从上一个请求提取关心的数据保存到变量
- 在下一个请求引用该变量 ${变量名}。
3、关联的使用方法
- JDBC将操作结果赋值给变量,再在另一个请求中调用变量
- 正则表达式提取器
- XPath提取器
- Css/Jquary提取器
- Json提取器
- BeanShell等具有提取功能的后置处理器
二、关联之XPath提取器
1、需求:
在Google中打开百度界面-----将百度请求得到的tltle标签值作为google请求的请求数据进行请求
2、实现过程:
(1)创建访问百度和访问Google的HTTP请求,如下图所示,Google请求的路径先不填写。
(2)查看结果树,并将访问百度请求的响应结果的格式修改为HTML格式,如下图所示:
(3)在访问百度请求上右键----添加----后置处理器----Xpath Extractor,创建Xpath提取器,定义变量并编写Xpath路径,如下图所示:
(4)修改google中的请求路径,调用定义的变量,如下图所示:
(5)运行测试计划,查看结果树的显示结果,如下图所示:
三、参数化之正则表达式提取器
1、正则表达式
正则表达式,又称规则表达式,正则表达式通常被用来检索 、替换那些符合某个规则的文本。详情资料:https://www.w3cschool.cn/regexp/tfua1pq5.html
2、需求
查询接口查询某个学院信息,并使用百度进行搜索该学院信息。
3、实现过程
(1)创建查询某个学院信息的HTTP请求,运行测试计划,查看结果树,并修改请求结果的格式为JSON格式,如下图所示:
(2)查询某个学院信息的HTTP请求右键-----添加-----后置处理器-----正则表达式提取器,新建正则表达式提取器并编辑提取器中的变量名、正则表达式、模板、匹配数字等,如下图所示:
注:当匹配数字为0时获取到的是随机的学院信息,当为2时,获取的时第二个学院信息。不加?匹配到最后一个结束标记(;,);加?表示匹配到第一个结束标记。
(3)创建百度访问请求,修改访问路径,调用正则表达式提取器中定义的变量,如下图所示:
(4)运行测试计划,查看结果树
4、正则表达式提取器设置
(1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
(2)正则表达式:制定规则的公式,公式模板:前缀识别()后缀识别
- ():括号括起来的部分就是要提取的数据
- . :点表示匹配字符
- + :代表+号前面的字符必须至少出现一次(一次或多次)
- ?:在找到第一个匹配项后停止
- * :匹配规则内所有的字符串
(3)模板:$$格式:如果只有一个模板,一般就填写$̲1$,也可有多个模板,如$1$…3$等等,表示解析到的第几个值给保存到定义的变量中。如:$1$表示解析到的第1个值;
(4)匹配数字:表示将第几个匹配结果返回。0代表随机取值,1代表全部取值,通常情况下填0
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取
三、总结
1、使用场景:一个请求的响应数据作为另一个请求提交的数据
2、 优点:使用关联可以组织多样的业务逻辑
3、实现方案1:XPath 提取器(html 等标签语言)
实现方案2:正 则表达式提取器(普通文本)
- .:表示任意字符
- *:任意字符串
- +:一个或多个
- ?:到第一个结束标记
- ():声明截取的区间范围
4、选用:如果从标签(HTML|XML)语言提取数据最好使用Xpath提取器,如果想要的数据是文本格式,则使用正则表达式比较方便。
5、注意:提取器必须放在请求下面,如下图所示:
注:可通过线程组右键----添加----取样器----debug sampler,查看提取器是否获取到值。
注:正则表达式提取器中若正则表达式是JSON格式,冒号后没有空格,否则可能导致无法解析出来。