【软件测试】JMeter接⼝测试——动态获取其他接⼝的返回值
实现接⼝⾃动化测试
postman的中文翻译JMeter和Postman的⼀个区别就是,JMeter可以多个接⼝⼀起进⾏测试,Postman是单独的⼀个接⼝进⾏测试。
多个接⼝⼀起测试在某个场景下⽐较好⽤,⽐如:
⼀个卖家后台管理系统,现在对其进⾏三个接⼝测试,分别是商品列表、添加订单、订单详情。
实际项⽬中会给出接⼝⽂档进⾏接⼝测试。
请求⽅式:参考接⼝⽂档
请求参数:参考接⼝⽂档
返回参数:参考接⼝⽂档
使⽤Postman进⾏接⼝测试就是把每⼀个接⼝单独测试,每次单独执⾏。
创建订单⾥的商品id这个参数可以直接从商品列表⾥⾯获取
创建订单后,直接把订单详情也测试,此时我们需要使⽤动态获取接⼝的返回值,创建订单会创建⼀个订单号,那么我们就直接使⽤创建订单这⾥的订单号来测试订单详情,让他们⼀起执⾏。
有两种⽅法⽐较常⽤
正则表达式法
JSON提取器
使⽤JMeter动态获取其他接⼝的指定返回参数进⾏⾃动化测试:
前⾔:使⽤JMeter会出现⼀些报错以及⽐较⿇烦的设置项,Postman则不容易出现报错,出现错误后如何解决就靠我们的经验了,有时候由于中英⽂翻译也会出现⼀些问题,建议使⽤中⽂熟悉后还是使⽤英⽂版的JMeter
过程:
1. 测试计划中创建setUp线程组
2. setUp线程组添加三个取样器HTTP请求,命名为商品列表、添加订单、订单详情
3. 添加⼀个配置元件HTTP信息头部管理器,放在测试计划下,和setUp同级
4. 添加-察看结果树,先运⾏⼀次不需要传⼊任何参数的商品列表,Text⾥⾯看取样器结果到需要放在HTTP信息头部管理器中
的名称和值 例如:Content-Type / application/json;charset=UTF-8
5. 察看结果树⾥⾯可以看到商品列表的响应数据(返回参数),选择JSON Path显⽰格式⽐较好看,或者把Text内容复制区JSON在线
解析⽹站()结果例如:
会有很多,就不全部展⽰了,我们想要的商品id在foods⾥
6.  使⽤JSON提取器提取商品id返回值,在商品列表-添加-后置提取器-JSON提取器-Names of created variables(idone 这个⾥⾯的
就是之后我们在创建订单⾥⾯要⽤${}去获取的值)-JSON Path expressions(这⾥是JSON提取器的格
式,$.data[2].foods[0].id,意思是data中的第三个对象⾥⾯的第⼀个foods的id)
7. 创建订单⾥⾯的特定传⼊参数就写为${id_one},如果不⽤JSON动态获取,我们则需要去数据库中,或者去商品列表中复制粘贴过
来。
8. 使⽤创建订单的返回值订单id,来测试订单详情,这⾥我们使⽤正则表达式⽅法来测试,创建订单-添加-后置处理器-正则表达式提取
引⽤名称是⾃⼰取的,"orderId":"(.*?)"正则表达式是规范,正则表达式⾥⾯的orderId这个参数名,我们需要去察看结果树中查看创建订单的响应数据,到这个名称
然后在订单详情⾥,传⼊参数填写${orderId}
9. 最后我们把这三个⼀起选中,⼀起开始执⾏测试,观察运⾏结果。
补充:
1. 这⾥可以⽤正则表达式测试返回值
2. setUp线程组-添加-调试取样器 在察看结果树⾥⾯可以看到你设置的所有提取器提取的各个值