一、关联
当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。JMeter可以通过“后置处理器”中的一些组件来处理关联
常用的关联方法:
(1)正则表达式提取器 (http://www.regexp.cn/Regex)
类似于一个公式,要找到左边界和右边界字段,
“.”:通配符,一个.代表一个任意字符(除换行回车),
“*”:表示前面的字符出现0次或者多次
“?”:代表非贪婪匹配,找到左边界后,往右查找匹配有边界,只要有匹配的右边界就停止继续查找,再次查找左边界、右边界
“<>()<>”:将()里数保存为一个参数,两边的<><>不要
/d:表示数字
如:010 111 1111,用正则表示为:(/d*)-(/d*)-(/d*),$1$、$2$、$3$:表示取出第1组值、第2组值、第3组值
如:<title>.*</title>:贪婪匹配
<title>.*?</title>:非贪婪匹配
(2)XPath提取器
(3)JSON提取器
二、正则表达式提取器
添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)后置处理器-->正则表达式提取器
-引用名称:将参数提取出来以后,要保存到一个变量,引用名称就是变量名
-正则表达式:用什么方式匹配,匹配公式。提取出数据以后,把值存储到引用名称的变量里,若没有提取到值,则将缺省值保存到变量里
-模板:用$$引用起来,如果在正则表达式中有多个表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值
-匹配数字:0代表随机取值、1代表第一个结果、-1代表所有结果,通常情况下填0
-缺省值:如果参数没有匹配到值,那默认给一个值让它取
2.1场景1
请求:http://www.jd.com 获取网页的title值
请求:https://www.baidu.com/,把获取到的title作为请求参数
2.1.1 操作步骤
1.添加线程组
2.添加HTTP请求--京东
3.添加正则表达式提取器
4.添加HTTP请求--百度
5.添加查看结果树
2.2 场景2
匹配结果有多个时
可添加:测试计划-->线程组-->添加-->取样器-->Debug Sample 来进行调试
如果匹配数字为1,则直接使用变量名来引用:${变量名}
如果匹配数字为-1,则使用变量名+后缀的方式来引用:${变量名_s}
三、XPath提取器--定位元素、路径
添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)后置处理器-->XPath提取器
tips:适用于返回的格式是HTML
3.1 场景
请求:http://www.jd.cn 获取网页的title
请求:https://www.baidu.com,把获取的title作为请求参数
3.2 操作步骤
1.添加线程组
2.添加HTTP请求--jd
3.添加XPath提取器
4.添加HTTP请求--baidu
tips:引用变量需要加索引:/s?wd=${title_1}
5.添加查看结果树
3.3 参数设置(XPath提取器)
-Use Tidy(tolerant parser):如果勾选此项,则使用Tidy将HTML响应解析为HTML。当需要处理的页面是HTML格式时,必须选中该选项;当需要处理的页面是XML或XHTML格式(例如:RSS返回)时,取消选中该选项,勾选也行
-引用名称:存放提取出的值的参数
-XPath Query:用于提取值的XPath表达式
-匹配数字:如果XPath路径查询导致许多结果,则可以选择提取哪个作为变量
0:表示随机
1:表示提取第1个结果
-1:表示提取所有结果(默认值),是个列表,取的时候要用索引取出,他们将被命名为<变量名>_N(其中N时从1到结果的个数)
X:表示提取第X个结果,如果这个X大于匹配项的数量,则不返回任何内容,将使用默认值
-缺省值:参数的默认值
四、JSON提取器
添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)后置处理器-->JSON提取器
tips:针对JSON格式的数据进行提取
配置:
引用名称:匹配后的数据要存储的变量名
JSON path expression: 是JSON的路径,一般为: $.weatherinfo.city
引用:这届引用变量名即可
4.1 场景
1.请求获取天气的接口:http://www.weather.com.cn/data/sk/101010100.html
2.获取返回结果中的城市名称
3.请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数
4.2 操作步骤
1.添加线程组
2.添加HTTP请求-天气
3.添加JSON提取器
4.添加HTTP请求-百度
5.添加查看结果树