案例场景:在测试创建订单使用系统的企业支付时,需要获取到创建订单后的订单编号才能支付,在jmeter里面可以直接提取上一个接口json里面的值(sysno)作为下一个支付接口的入参。我现在有一个创建订单接口A,创建成功后会返回一个sysno值。企业支付请求接口B必须要获取到接口A返回订单编号才能支付。这里介绍一下jmeter使用后置处理器【json extractor】获取你想要得到的值,根据上一个接口具体返回的json格式去自定义【json path expressions】json路径表达式。
A接口创建订单接口文档基本信息
请求类型:POST
请求头部:application/json
请求参数:[{"soType":0,"distributorSysNo":100001,"receiverInfo":{"receiveAddress":"收货地址","receiveAreaSysNo":2620,"receiveContact":"联系人","receivePhone":"15878788784"},"products":[{"productSysNo":42753,"quantity":2,"memo":null,"expectDeliveryDate":null},{"productSysNo":41681,"quantity":1,"memo":null,"expectDeliveryDate":null},],"customerMemo":客户备注信息,"deliveyType":54}]
A接口的请求和返回的报文信息如下

B接口企业支付的接口文档基本信息
请求类型:POST
请求头部:application/json
请求参数:{"orderSysNos":["${ordersysno}"],"soSysNo":"${ordersysno}","payTypeId":"balancepay","orderType":0,"balancePwd":"123456"}
创建订单请求



JSON提取器

注意:添加后置提取器时一定要放在http请求下面,不能放在线程组下面否则会一直提取不到下一个接口读取的值就会错误

JSON提取器参数说明:
Names of created variables 参数名称
JSON Path expressions 提取表达式
Match No.(0 for Random) 匹配规则,-1所有,0随机,1第一个
Compute concatenation va 如果有匹配到多个值,选择此项,会将全部值保存到_ALL,并使用逗号分割每个值,注意Match No. (0 for Random)需要为-1才有效,不然只能匹配到一个值了
Default Values 没提取到就给默认值
JSON提取器表达式说明,如果是获取第一层级的直接用$.参数,比如我们要获取接口A返回的code,JSON Path expressions就用$.code;如果是返回的是一个数组就要根据返回内容去找到对应参数即可,比如我们获取的是接口A返回的data第一个sysno,就用data[0].sysNo,注意写参数时一定要和返回的一样(最好是复制),比如写成了data[0].sysno就提取不到,因为在data中找不到sysno
关联请求


网友评论