在工作中经常遇到这种情况,就是下一个接口需要引用上一个接口返回的值,普遍的方法就是运用后置提取器。
常用的就是json提取器,边界提取器,正则表达式提取器这三种,这里主要记录json提取器相关使用方法。
在正式提取之前,我们可以使用ison提取器来测试我们的表达式,操作步骤如下;

验证表达式成功后,可以正式进行提取,在所需要提取的接口下添加json提取器:请求右键添加-后置处理器-json提取器(英文版:JSON Extractor在Post Processors中)


界面如下:
界面参数详解:
1:Names of created variables:匹配到的数据存储的变量名称,后续可以使用${variable name}引用它
2:JSON Path Expressions:JSON路径表达式
3:Match No. (0 for Random):如果匹配到多个结果,选择使用哪个。0代表随机,-1代表全部,x代表第x个
4:Compute concatenation var:勾选此项后,如果匹配到多个结果,JMeter会使用","将他们连接起来,存储在的变量中
5:Default Values:默认值,如果JSON 路径表达式未能匹配到值,将使用该默认值
通过以上配置好后,能够正确提取需要的变量,则在下一个接口中引用该赋值:JMETER中引用变量的方法 ${变量名}

如果是下一个请求需要关联上一个请求的多个字段,那么可以添加多个提取器,不过jmeter也支持一个提取器提取多个字段的值,只需要原来变量的地方填写多个,中间用分号隔开即可,如下:

如果想匹配到一个字段所有的值(返回结果有多个子集的时候),可以通过配置Match No.(0 for Random)为-1,代表匹配全部

配置完成之后其他接口要提取里面的内容,可以通过${fh_id_0}获取第一个值------规则和python的切片类似:
$.List[*].code[0]----第一个code
$.List[*].code[0,1]----前两个code
注意:提取多个值,提取器的 Match No.(0 for Random)必须是-1


3065

被折叠的 条评论
为什么被折叠?



