接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
  X7HGjGJ7MG9G 2023年11月02日 18 0

因为本章的内容是使用jq工具配合完成,因此在开始部分会先花一定的篇幅介绍jq机器使用,如果读者已经熟悉jq,可以直接跳过这部分。


先来看应用场景,App 经常会有一些信息展示的列表页,比如商家的菜品、股票的公司、文章的列表展示等,例如下面这样:


菜品不够吃的话~不是,是菜品数量较少不够测试的量,假如我们想要测试几百个菜品时,会不会在刷的时候是否有性能影响,展示是否正常,列表展示的边界值测试等;


而要测就得有数据展示,这个时候要是通过后端去找或者造这么多数据是有点麻烦的,其实我们这个测试的测试点就是要测试前端页面的展示和性能,只要有这部分数据就可以,无所谓数据是否真实从数据库得来。


这个时候可以就可以利用mock的手段,对这种大数据进行等价类的生成,使前端可以拿到这类数据即可,而Charles正是我们实现手工mock测试的利器之一!


按惯例,先看官网对jq的解释:


jq 官网地址:[​https://stedolan.github.io/jq/​](https://stedolan.github.io/jq/)


大概意思就是轻量灵活的Json处理命令行。


用途


说到这大概有些人有点感觉它能用来做什么了,为啥手工mock要使用jq了?没错!要用它来处理接口返回的json数据以达到mock的效果。


Mac:Mac还是一如既往的简单(香~),装了Homebrew 的话一条命令brew install jq即可

其他系统:jq 的官网很贴心,给出了各个系统的下载方式及其相关所需下载工具的链接,具体的就查看官网吧,链接如下

基本过滤 .

简单的说就是原样输出来:

对象过滤 .key、.key1.key2、."key"

索引过滤 .keyindex、.key startIndex: endIndex

.keyindex

.key startIndex: endIndex

对象构建 {} 、[]

如果其中一个表达式有多个结果,那么输出也会产生多个结果

如果key是不存在的,value将会赋值为null

如果再键的周围加括号就意味着它将作为表达式进行计算。

其他常见用法:

计算

获取长度

数组运算

jq 对于数组可以有并集(’+’)和差集(’-’)的操作:

并集('+'):有数组a,b; a+b就会得到一个包含所有a,b数组元素的新数组:

差集('-'):有数组a,b; a-b就会得到一个只包含a中元素,不包含b中元素的新数组:

更多用法

更多用法可参考官网:

[​https://stedolan.github.io/jq/manual/#Basicfilters​](https://stedolan.github.io/jq/manual/#Basicfilters)

如下图中的科普推荐栏目中有 2 则科普文章,现在想要mock几十甚至上百篇文章或广告。

抓取接口的响应json报文如下:

我们将数据存入json文件中,然后赋值给一个变量

然后我们利用jq对pageList中的列表进行+=操作,完成一次翻倍增长,将结果传给变量mockData。

按照上述的方法,每次列表的元素个数都会翻倍,也就是操作n次就变成2的n次方倍,指数增长的速度就不用多说了~

这样根据自己的需要得到数据后将新数据存入json文件,最重要的数据准备过程也就完成了:

说了这么多“废话”,总算是到了主角了,其实数据准备好了,工具的使用还是很简单的,Charles有一个叫做Map Local的功能,在你要mock的请求上右击就可找到:

Map Local可以对指定的接口返回使用本地文件进行替换,如这里替换为上文中废话半天生成的数据文件MockTest.json:

然后再次刷新页面,看看效果,页面的列表就如愿倍增了,也不用去数据库添加数据,保存一份json文件即测即用即可:

以上,期待大家一起交流,多多指正。

【相关文章】

基于 Charles 代理技术的接口测试 Mock 实战 (一)

接口测试策略与问题分析模型


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  SBowDWXjb0NT   2023年11月30日   41   0   0 redis线程池数据
X7HGjGJ7MG9G
最新推荐 更多