一、前言
在开展接口测试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。
关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用。
B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibiliB站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click
二、正则表达式提取器元件
正则表达式提取器,见名知意就是使用正则表达式的方法把我们需要提取的内容通配出来。
原理:通过左右二边不变的边界来提取中间变的返回值
如上图:需要提取access_token
{"access_token":"31_qz2HtPalsk5Ey1ToWJaZ6Kaojf8y-BhxTHEmuO111m8_Gc_77HRvMuG4ltbd9gHskqi0XAq8phQys9K8awso4iq-VSr0bArrd-zC-nY0Ltudp-HcPZV7y291YjLYoeJBHW2zhB7-lWYzeTsqFKOhAHANSW","expires_in":7200}
步骤1:在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->正则表达式提取器
引用名称:即下一个请求要引用的参数名称,如填写access_token,则可用${ access_token}引用它。
正则表达式:()括起来的部分就是要提取的。.代表任意字符,+表示一次或多次,*代表出现任意次。
模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$,$3$等等,表示解析到的第几个值给access_token。本处只有1个,所有使用$1$。
匹配数字:0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。
步骤2:在后面的接口中使用${ access_token}引用
三、使用调试取样器检查是否提取成功
添加调试取样器-->运行测试-->通过查看结果树里面的 调试取样器 查看结果
四、总结
在编写 jmeter脚本的过程中,第一步是单用户单循环,处理好接口关联的问题,保证接口的功能业务正常,所以关联的处理尤其重点。
五、json提取器的使用场合及原理
使用场合:接口关联,并且前一个接口返回的数据类型为json格式的数据,需要从返回中提取出数据。
将json返回复制到 www.bejson.com-->json菜单-->json视图-->json数据中,然后点击试图查看,如下图:
原理:通过jsonpath从json文件中提取出数据。
例如:access_token:在整个json文件中的path是:根节点--> access_token
六、json提取器的使用步骤
步骤1:在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->JSON提取器
Name of created varialies:即下一个请求要引用的参数名称,如填写access_token,则可用${ access_token}引用它。
JSON Path expressions:填写jsonpath,格式:$. 节点名称 根节点用 “.” 表示
Match Numbers:0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。
Default Values:找不到时默认值,一般设置为NOT FOUND
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”
步骤2:替换变量为${ 变量名}
步骤3:使用 调试取样器 检查是否提取到了
七、扩展:复杂一点的json文件节点的提取
如图:{"tag":{"id":193,"name":"newdream20200324"}}
JSON提取器配置如下: $.tag.name