因为本章的内容是应用jq工具配合实现,因而在开始局部会先花肯定的篇幅介绍jq机器应用,如果读者曾经相熟jq,能够间接跳过这部分。
先来看利用场景,App 常常会有一些信息展现的列表页,比方商家的菜品、股票的公司、文章的列表展现等,例如上面这样:
菜品不够吃的话~不是,是菜品数量较少不够测试的量,如果咱们想要测试几百个菜品时,会不会在刷的时候是否有性能影响,展现是否失常,列表展现的边界值测试等;
而要测就得有数据展现,这个时候要是通过后端去找或者造这么多数据是有点麻烦的,其实咱们这个测试的测试点就是要测试前端页面的展现和性能,只有有这部分数据就能够,无所谓数据是否实在从数据库得来。
这个时候能够就能够利用mock的伎俩,对这种大数据进行等价类的生成,使前端能够拿到这类数据即可,而Charles正是咱们实现手工mock测试的利器之一!
按常规,先看官网对jq的解释:
jq 官网地址:https://stedolan.github.io/jq/
大略意思就是轻量灵便的Json解决命令行。
用处
说到这大略有些人有点感觉它能用来做什么了,为啥手工mock要应用jq了?没错!要用它来解决接口返回的json数据以达到mock的成果。

  • Mac:Mac还是判若两人的简略(香~),装了Homebrew 的话一条命令brew install jq即可
  • 其余零碎:jq 的官网很贴心,给出了各个系统的下载方式及其相干所需下载工具的链接,具体的就查看官网吧,链接如下
  • 根本过滤 .
    简略的说就是原样输入来:
  • 对象过滤 .key、.key1.key2、.["key"]
  • 索引过滤 .key[index]、.key[ startIndex: endIndex]
    .key[index]
    .key[ startIndex: endIndex]
  • 对象构建 {} 、[]
    如果其中一个表达式有多个后果,那么输入也会产生多个后果
    如果key是不存在的,value将会赋值为null
    如果再键的四周加括号就意味着它将作为表达式进行计算。
  • 其余常见用法:
    计算
    获取长度
  • 数组运算
    jq 对于数组能够有并集(’+’)和差集(’-’)的操作:
    并集('+'):有数组a,b; a+b就会失去一个蕴含所有a,b数组元素的新数组:
    差集('-'):有数组a,b; a-b就会失去一个只蕴含a中元素,不蕴含b中元素的新数组:
  • 更多用法
    更多用法可参考官网:
    https://stedolan.github.io/jq...
    如下图中的科普举荐栏目中有 2 则科普文章,当初想要mock几十甚至上百篇文章或广告。
  • 抓取接口的响应json报文如下:
  • 咱们将数据存入json文件中,而后赋值给一个变量
  • 而后咱们利用jq对pageList中的列表进行+=操作,实现一次翻倍增长,将后果传给变量mockData。
    依照上述的办法,每次列表的元素个数都会翻倍,也就是操作n次就变成2的n次方倍,指数增长的速度就不必多说了~
    这样依据本人的须要失去数据后将新数据存入json文件,最重要的数据筹备过程也就实现了:
    说了这么多“废话”,总算是到了配角了,其实数据筹备好了,工具的应用还是很简略的,Charles有一个叫做Map Local的性能,在你要mock的申请上右击就可找到:
    Map Local能够对指定的接口返回应用本地文件进行替换,如这里替换为上文中废话半天生成的数据文件MockTest.json:
    而后再次刷新页面,看看成果,页面的列表就如愿倍增了,也不必去数据库增加数据,保留一份json文件即测即用即可:
    以上,期待大家一起交换,多多斧正。