背景
在平时做接口测试的时候,经常会遇到上一个接口的response中的某一个元素,是下一个接口的参数。
如:
- 新增一个订单,返回一定订单ID,下一个接口对这个订单进行修改,需要传入上一个订单的ID
- 登陆接口返回的一个值str,需要在后续的接口中作为参数传入
等等,场景大同小异。
概括起来就是参数的传递。
这种平时我们写脚本,写代码相对比较容易实现,可是如果在Jmeter中应该怎么解决呢?
后置处理器
整体思路和我们写代码差不多,即:
- 1.找到这个参数
- 2.把它赋值给一个变量a
- 3.后续接口需要用到,传入这个变量a
简单的实践
如目前我们一个接口,返回内容如下:

需求:把code和msg提取出来,传给下一个接口使用
Regular Expression Extrator
这边可以用Jmeter 的Regular Expression Extractor 来解决
在这个http request 请求后,挂在一个Regular Expression Extractor,其打开后页面如下:

field to check: 需要你自己选定是对response的内容还是头,还是url进行抓取。
Name of created variable: 抓取出来的变量名称,这边自行命名
Regular expression: 这个是最重要的!!!正则表达式就写在这里。 正则表达式的正确与否,是你抓取的关键,如果正则写错了,参数就无法抓取出来了。
这边可以加上Debug Sampler,打印抓取的参数,以便修改正则
Template: 提取正则表达式里面的内容,通常我们只提取一个字串,所以通常都是。
Match No: 匹配的数字, 通常我们只提取一个字串,一般写1。
Default Value: 缺省值或默认值,用于没有抓取到值时的处理。
这样通过 ${var}的方式,把变量写入request里面
如上所示,这样就把status给提起出来

点击 view result tree中的结果,点击Debug Sampler可以看到我们抓取的数字是否正确
JSON Extrator
类似还有 Json Extrator,整体接口和上面相似,提取的部分换成了JSONPath的语法,相对可能更加简单一点
如图,这边我提取msg的内容

下面我把上面提取的两个参数,同时传递给百度


从结果数中可以看出,两个参数 waiqin_status和waiqin_msg均传递成功。
网友评论