本地host+nginx轻松mock服务器第三方接口
背景
小安然在测试工作中经常会遇到关联方、第三方接口不稳定,导致卡住功能主路径block住工作的情况,测试过程经常很被动,同时不想总是骚扰研发GG支持测试功能,于是想要将这些接口mock住,自己来提供稳定的返回,改善被动局面。后续同样可以用来进行接口测试。
方案
方案选型的过程也比较曲折,小安然知道charles此类截包工具可以实现windows/mac端的url重定向,但linux服务器不支持charles等软件,其他截包代理工具小安然表示暂时先不想熟悉一个新的工具增加自身工作量,于是思考再三想到了一个比较取(偷)巧(懒)的方法。
以mock网址www.baidu.com/a/b.html为例,想要将www.baidu.com/a/b.html重定向到www.mock.com/c/b.html,先添加服务器的host 127.0.0.1 www.baidu.com,将网络请求重定向到服务器本地,再通过本地nginx重定向url,rewrite ^/a/(.*)$ http://www.mock.com/c/$1 permanent;,这样就可以不用其他截包工具,通过本地host+nginx代理轻松将第三方接口mock住了。
mock数据的工具到处预研了一圈,wiremock非常轻量级,功能也都能满足,但是没有web管理后台,小安然想找个能装13的,easy mock很多人使用,功能也都不错,不过找到阿里出品的rap2,似乎功能更为强大,于是动心了,虽然看官方文档和回帖似乎安装过程会比较曲折,还是决定入坑,先省略安装实践踩坑过程,直接跳到大结局。。。最后发现人家阿里免费提供了在线mock工具http://rap2.taobao.org/account/login,如果自己没有二次开发的需求,根本不需要安装,表示淡淡的忧伤,辛辛苦苦搭好的rap2经验也记录下吧。。。
——————————————————————————————————
rap2安装实践
首先需要了解rap2项目结构,rap2分为前后端,都是基于nodejs的,需要分别拉代码、安装编译打包、起服务才能使用。
安装基本工具:git、node 8.9.4+、mysql 5.7+、redis 4.0+。
——后端:
官方文档:https://github.com/thx/rap2-delos
拉代码:git clone https://github.com/thx/rap2-delos.git
终端启动redis:
redis-server
npm install -g pm2
npm run start:redis
创建数据库:
CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
初始化:
npm install
确认/config/config.dev.js中的配置;
安装 && TypeScript编译
npm install -g typescript
npm run build
初始化数据表
npm run create-db
执行mocha测试用例和js代码规范检查
npm run check
启动开发模式的服务器 监视并在发生代码变更时自动重启
npm run dev
服务器启动成功后,访问127.0.0.1:8080将会提示RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores).
现在需要继续部署前端。
——前端:
官方文档:https://github.com/thx/rap2-dolores
拉代码:git clone https://github.com/thx/rap2-dolores.git
npm install
npm run dev
执行成功后,命令行中会提示访问url,直接访问出现登录页面即可正常使用了。