服务接口如何mock_小白接口测试系列Mock究竟是什么?

1. 什么是Mock?它能干什么?

Mock这个概念在很多测试领域都存在,它最早出现在单元测试过程中。因为在接口测试中也经常被用到,所以大家耳熟能详的Mock一般是指接口中的Mock。

Mock是指在测试过程中,对于一些不容易构造/获取的对象,创建一个Mock来模拟对象的行为

如果模拟的是一个函数或者模块,它的原理就是这样的:

7c5f0a3a2d6f23341b63ce4c799d3db5.png
mock2-1.jpg
7aa1ae9d54bd244726c009cd36befc0d.png
mock2-2.jpg

如果模拟的是一个服务(Http、RPC等等都可以),它的原理就是这样的:

764dba66a6c138076b8d1dcb26706503.png
mock1.jpg

看图就会明白,我们好像挡住了真正的服务,模拟了一个自定义的假服务,所以我们经常把Mock也叫做挡板。

我们暂时不讨论单元测试中的Mock,也就是第一张图的情况,只研究接口测试过程中的Mock。

我们为什么要模拟这个服务?为什么不去直接访问它呢?原因主要有几下几点:

  • 前后端分离在项目中应用的越来越普遍,我们如果Mock掉后端的接口服务,按照项目约定的接口文档返回指定格式的数据,会给前端开发团队带来极大的方便。等到项目集成测试(联调)阶段只需要拿掉挡板即可。这样做会提升团队整体开发效率。
  • 在微服务架构下服务与服务之间的开发也是相对独立,在这种场景下Mock也能发挥和上一条应用中一样的价值。
  • 在我们日常的接口测试中会经常遇到调用第三方接口的需求,比如,我们的订单确认接口会调用支付宝、微信的支付接口,拿到返回结果后才能完成整个业务流程;我们的商品查询接口,需要调用第三方商家的库存服务等等。在这类测试中,测试人员会遇到三种不太方便的场景:第一个是第三方接口可能暂时无法调用,我们的业务流程无法继续下去。第二个是我们需要模拟第三方接口的错误情况,比如支付超时、商家下线无法提供服务等等。第三个是如果对方没有提供测试接口或沙箱环境,我们就需要真实交易、真实支付,这样会引发垃圾数据还涉及到金额损失和退款。此时如果Mock掉第三方服务,是不是就会方便很多呢?测试结束后,切换回真实地址即可。

2. 有什么工具可以快速建立起一个Mock服务呢?

1. Easy-Mock

Easy Mock 是一个可视化,并且能快速生成 模拟数据 的持久化服务,我们可以登录 https://www.easy-mock.com/

注册账号快速开始Easy-Mock之旅。

但是这个网站不稳定,经常刷新后报错或进不去等问题。能不能自己搭建这个环境呢?

准备工作
nodejs (>=8.9.1)MongoDB (>=3.4.1)Redis (>=4.0)

这三个工具的安装,我就不再占用篇幅了。原因嘛,和我上课不讲环境配置一样(你细品)。但是有个坑还是要提前说一下,官网的要求是MongoDB>=3.4.1,Redis>=4.0这个一定要遵守。

https://www.mongodb.com/try/download/community

安装下载easy mock
#克隆代码到本地git clone https://github.com/easy-mock/easy-mock.git#进入easy-mock目录cd easy-mock#安装插件npm install

注意:在启动之前需要修改config/default.json,修改后如下图所示:

e1fd6ca2e5efe7e775b18f730bef6b84.png
mock3.jpg
访问easy mock
#启动easy-mocknmp  run  dev
d411e953fe79c9a64dbc746682177162.png
mock4.jpg

输入http://localhost:7300 ,可以看到easy-mock首页

6a4605a8dc5f83aafb37928f6162a162.png
mock5.jpg
使用easy-mock

私服搭建好了,我们就进去看看,如何使用它模拟一个接口服务。

官方文档永远是你的第一手学习资料:https://easy-mock.com/docs

1. 创建一个项目
362f57e1db76aa0fdeaa32f1fe3d496a.png
mock6.png
2.在刚刚创建的项目中创建接口
1bf59140e151b1b53eb41691ae7ddbe1.png
mock7.png
3.预览接口
f6e42ed03af86f766c8cac16b8967228.png
mock8.png

Easy Mock 支持基于 Swagger 创建项目,以节省手动创建接口的时间。Swagger 文档更新也能通过更新操作重新生成接口,并且这是智能的,只会对修改过的接口进行更新。

我们下一篇会继续讲解,如何更加智能地定义一个Mock服务

点一下阅读原文,获取接口面试题集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值