whistle代理+mock轻松解决“页面端“测试接口没数据难题

0、whistle是什么?怎么用?

自行百度,此处不再赘述!

1、示例演示(交易订单测试)
  • 背景和痛点最近在测试一个小需求,需要涉及订单侧服务+商品库侧服务+库存侧服务+财务侧线下交易服务。痛点主要在订单侧,需要配置脉聘 + 特价优惠配置(这里是个痛点)

    为什么说【特价优惠配置】是个痛点?

    因为之前开发同学在上一个需求开发过程中,为了能更充分的在沙箱进行测试,修改了一些代码让特价优惠配置的时候,沙箱和线上环境互斥了:即沙箱如果操作特价优惠配置,那么就会覆盖线上的配置数据---至于为什么这么玩?不太清楚,详细可以咨询开发或 测试。然后测试脉聘,需要在【框架合同】下的【XXXX】表单里有一个get接口需要取到配置的特价配置数据,然后才能享受特价配置计算价格等--下面会有详细说明图文的

  • 如何解决呢?因为测试基本都在沙箱(需要配置hosts),我们又没办法通过页面配置,那么我们只能换一种方案:即mock【框架合同】下的【XXXX】表单里有一个get接口的返回值(前提是得知道这个接口返回值的数据类型)。

  • 实施步骤:

    • 首先进入【框架合同】下的【XXXX】表单页面,打开开发者模式,拿到添加商品时调用的get获取配置接口,如下图:

    最终我们能拿到get接口是:https://xxxxxxx/aaa/bbb/create/findXXXX?contractNo=xx-xx-KJ-xxxxxxxxxxx\&pxxxCode=8102614xxxxx0000接口返回值demo:json的字符串

json 复制代码
[{
	"id": 123123123123123123123,
	"type": 8,
	"limitCountMin": 0.01,
	"limitCountMax": 0.02,
	"discount": 5.00000,
	"discountExtra": 2.85000,
	"state": 1,
	"creatorId": "20150106xxxxxxx",
	"createTime": "2022-10-18 00:36:36",
	"updateId": "201811xxxxxxxxxx",
	"updateTime": "2023-01-30 18:31:52",
	"businessType": 0,
	"customerType": 0,
	"consumeMonth": 0,
	"consumeQuarter": 0,
	"productLine": 1,
	"productCode": "820916xxxxxxx0001",
	"businessTypes": "[1],[4],",
	"computeWay": 1,
	"validTimeType": 1,
	"validBeginTime": "2021-06-18 00:00:00",
	"validEndTime": "2022-10-17 23:59:59",
	"relationId": "16660xxxxxx550",
	"realDiscount": 0.1419999999999999873434575192732154391705989837646484375
}]
  • 拿到接口和接口返回值我们就好mock了

  • 本地安装whistle并进行一些必要的代理配置--自行百度

  • 启动whistle 并新增values文件

    文件名随便定义,文件的内容就是接口的数据结构,json字符串,当然其中部分字段的值可能需要根据业务规则做相应修改---详询开发补充:如果接口返回是json格式的,需要格式化接口返回值的demo数据,然后放到文件中。并且需要修改文件名为xxxx.json即可

  • 然后新增策略

    我们可以新增一个如上图,也可以直接放在default里因为我们需要mock接口返回值,这里直接放需要被mock的接口(无需包含入参),然后加我们设置的file即可格式是:【接口url】【空格】【file://{values中的文件名}】如上例:https://xxxx/xxx/xxx file://{testForMaiPin}

  • 然后就可以抓包了(最后在下图最下面黑框的filter中过滤一下接口域名或直接指定接口名也行,不然可能抓到很多请求不好check)

  • 最后去页面操作【框架合同】下的【XXXXX】表单页面,再次添加商品时,可以看到抓包到的接口已经有返回值了

相关推荐
扬帆丶起航15 天前
python单元测试
python·单元测试·mock
墩墩分墩2 个月前
【SpringBoot】解锁后端测试新境界:学习Mockito与MockMvc的单元测试魔法
spring boot·单元测试·集成测试·mock·moockito
深色風信子2 个月前
SpringBoot Mockito 依赖注入
mock·mockito·springboot单元测试·springboot mock
摇光933 个月前
React + 项目(从基础到实战) -- 第八期
前端·react.js·mock·axios
jjk_23333 个月前
Golang 环境变量配置 mockgen安装(macOS系统)
开发语言·后端·golang·mock·mockgen
STATICHIT静砸4 个月前
mockjs学习
学习·mock
追风的木木4 个月前
VUE3项目学习系列--Axios二次封装(五)
mock·vue3·axios
码农阿豪4 个月前
Java中灵活使用Mockito
java·开发语言·log4j·mock
QQ12154614686 个月前
Postman接口测试高阶——精通Mock Server模拟服务器的创建及使用等
服务器·测试工具·mock·postman·mock server
量化风云6 个月前
Mock大法:Fake it till u make it!
python·单元测试·mock·python能做大项目