接口测试中,经常会遇到,某个请求的参数需要从上一个接口的返回数据中提取,那么这时候我们就需要用到j提取器了。最常见的是json提取器,下面就来介绍下json提取器的常见使用方法。
一、首先我们来了解下,json提取器各个参数的意义

Apply to:应用范围。一般使用默认的即可
Names of created variables :变量名称,提供给其它控件引用。这个自定义,多个参数用分号隔开。匹配到单个值可直接引用,如${id};若是匹配到多个值,需要使用第n个值时则带上下坐标,如第3个为 ${id_3}
JSON Path expression:从json响应中提取内容的表达式,其中$代表根元素,.id表示从根元素往下找到id,匹配所有值用 [*],如$.[*].id,匹配第n个值用 $.[n].id
Match No.(0 for Random):0代表随机选择一个,-1代表提取所有值,n表示提取匹配的第n个值,如“1”表示提取匹配到的第1个值
Compute concatenation var(suffix_ALL):创建一个${foo_ALL}包含所有提取值的串联的变量,即将提取的值组成一个list返回
Default Values:缺省值,匹配不到值时使用该值,也可以写error
二、下面我们来结合实际业务场景来提取参数,可根据实际业务需要进行变换
1,匹配单个值
业务场景:登录后提取accessToken(即下图中的id),当做后面的请求的参数,返回和提取方式如下
注:因为这里只返回了一个id,所以表达式使用$.id,下面的Match No.(0 for Random) 为空即可


2,匹配所有的值,随机提取/指定提取
业务场景:匹配返回体中所有的“id”,0代表随机提取一个,需要指定提取第n个,将0改为n即可


这里指定提取还有另一种写法:$.[n].id

3,匹配多个参数
业务场景:匹配返回体中所有的“tpye”和“id”,添加一个Debug PostProcessor,可查看提取的结果。
使用:使用id和type的第n个值,${element_n} 、${tpye_n},使用返回值数量:${elementId_matchNr}



网友评论