什么是Mock
Mock在中文的含义就是模拟
的意思,mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
简单来说,就是通过某种技术手段模拟测试对象的行为,返回预先设计的结果。这里的关键词是预先设计,也就是说对于任意被测试的对象,可以根据具体测试场景的需要,返回特定的结果。比如要测试支付,但是你不想真实支付,那么可以Mock来模拟支付,返回支付的结果。
Mock作用
首先,Mock可以用来解除测试对象对外部服务的依赖(比如数据库,第三方接口等),使得测试用例可以独立运行。
提前创建测试,
TDD
(测试驱动开发)。如果你创建了一个Mock那么你就可以在接口开发完成之前写接口测试脚本了,当接口开发完成时再替换为真实的接口进行测试即可。替换外部服务调用,提升测试用例的运行速度。任何外部服务调用至少是跨进程级别的消耗,甚至是跨系统、跨网络的消耗,而Mock可以把消耗降低到进程内。
Json Server简介
json-server是一款小巧的Mock工具,它可以不写一行代码在30秒内创建一套Restful
风格的 api,适合3人及以下的前端团队做迅速mock后台逻辑,也可以在接口测试中使用。相比较Django,flask来实现Mock要方便很多。
Json Server下载安装
环境依赖
- 首选需要安装好Node.js,
- 国内用户建议配置好:cnpm
- 安装配置视频教程可参考:Appium环境搭建
安装
1 | cnpm install -g json-server |
校验
安装完成后输入如下命令进行校验:1
json-server -h
安装正确会提示如下内容:
1 | C:\Users\Shuqing>json-server -h |
入门使用
创建data文件
首先创建一个json文件:db.json
内容如下:
1 | { |
启动服务
1 | C:\Users\Shuqing>json-server --watch D:\api_test\json_action\db.json |
启动成功后可以看到如下提示:
1 |
|
接口测试
在浏览器输入http://localhost:3000
可以进入到主页。
查询
输入http://localhost:3000/posts
可以查看到对应的返回值:
1 | [ |
输入http://localhost:3000/posts/1
可以查看到如下返回值:
1 | { |
增加
使用POST
请求可以增加数据,例如我们在Postman中进行如下配置
可以看到成功插入了数据。
修改
使用PATCH
或者PUT
可以对数据更新,例如如下配置,即可修改author
数据。
删除
使用DELETE
可以删除数据,例如 请求http://NaN/posts/3
,则会删除id=3
的数据
路由生成
根据上面的data文件,默认情况下json-server会生成两类路由:
复数路由
1 | GET /posts |
单数路由
1 | GET /profile |
接口调试
首先创建db.json
数据内容如下:
1 | { |
过滤
使用查询字符串参数(Query String Parameters)可以查询对应的数据1
2GET /posts?id=1&id=2
GET /posts?title=zxw
指定过滤字段,使用.
号可以查询更深层次属性
1 | GET /posts?author.name=jack |
详见视频操作演示
分页
分页也是常用功能,使用_page
指定第几页,_limit
指定返回的数据条数。默认是一页显示10条数据。
1 | GET /posts?_page=1 |
排序
_sort
表示排序字段,_order
表示具体的排序方式,默认是升序:asc
降序为:desc
。
1 | GET /posts?_sort=id&_order=asc #升序 |
多字段组合排序
1 | GET /posts?_sort=para1,para2&_order=desc,asc |
切片
切片与字符串数组切片类似,可以返回指定范围长度的数据内容,起始下标为0
_start
指定纪录起始点,包含起点_end
指定终点,不包含终点_limit
指定返回的数量
1 | GET /posts?_start=0&_end=3 |
操作
_gte
: 大于_lte
: 小于_ne
: 不等于_like
: 有点像sql的like,支持正则表达式
1 | GET /posts?id_gte=2&id_lte=3 |
全局搜索
使用q
参数,比如
1 | GET /comments?q=zxw |
查看db
1 | GET /db |