moco接口测试

不用再等后端的接口啦!这个开源项目花 2 分钟就能模拟出后端接口

这里是 HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来一款开源免费的模拟后端 API 的工具:moco

没学过后端开发的也能快速上手这个开源项目,靓仔靓妹们不必再辛苦等待后端开发 API,从而有更多的时间逛 HelloGitHub 体验更多有趣的开源项目。接下来本文将用带你快速上手 moco 这个开源工具,让你不再卡在后端接口的开发进度上,一骑绝尘!

项目地址:https://github.com/dreamhead/moco

一、moco 有什么用

我做前端或者客户端开发,对我有什么用?

  1. 在后端 API 开发缓慢的时候,如果你想测试应用展示效果,就不必再等后端进度,使用 moco 轻松模拟后端 API。
  2. 在项目初期的时候,产品经理或者是客户想看到你的应用展示,模拟好 API 就可以开发前端,展示效果啦。

我做后端开发,对我有什么用?

  1. 企业级软件一般都是多人开发,因为接口之间是互相依赖的,所以如果你依赖的服务进度缓慢或者是没有在环境中运行,你就无法对你开发的功能进行测试,进而不能及时交付项目,从而加班熬夜。
  2. 即使你所依赖的服务在环境中运行,但是所依赖的服务依旧会不断测试和调优,这个过程也可能会导致你开发功能测试出现问题。一个稳定的测试接口,减少你的等待时间。

二、快速开始

2.1 准备工作

JDK 1.8+ (推荐1.8版本)

2.2 下载 jar 包

点击此处下载 jar 包

2.3 API 配置文件

新建 hello.json 文件,写入以下内容

[{ "description": "moco 快速开始示例", "request": {  "uri": "/hello" }, "response": {  "text": "Hello GitHub" }}]

目录结构如下

├── hello.json                             // API 接口配置文件├── moco-runner-1.1.0-standalone.jar       // 下载的模拟 API 的工具

2.4 运行项目

在该目录下运行

java -jar moco-runner-1.1.0-standalone.jar http -p 9999 -c hello.json
  • moco-runner-1.1.0-standalone.jar:运行程序的路径(刚刚下载的包的路径)

  • http:选择服务类型(有 http、https、socket)

  • -p 9999:设置服务端口 9999

  • -c hello.json:设置配置文件路径(刚刚新建的配置文件)

2.5 效果展示

在浏览器中访问一下地址

localhost:9999/hello

三、详细用法

刚刚的你应该十分轻松地模拟一个简单的后端 API,是不是很有成就感?但是你使用或者开发过后端 API 你就也许知道:一个合格的后端 API 不应该仅仅局限如此。一个合格的后端 API 应该能包括:请求方法、请求 URL、请求参数、请求头、请求体、返回状态码、返回提示信息、返回头和返回体等内容。

如何使用 moco 这个开源项目模拟出一个合格的后端接口呢?接下来就带你一步步了解详细用法。

3.1 基本结构

[  {    "description": "moco 基本结构",    "request": {      "uri": "/hello",      "method": "post"    },    "response": {      "text": "Hello GitHub"    } }]
  • json 文件的最层是一个 [] 数组,里面可以封装多个 API(示例只有一个 API)
  • 因为 json 配置文件不支持注释,所以这个 API 的注释你可以写到 description 里面
  • request 可以包含请求的所有内容
  • response 可以包含返回的所有内容

3.2 模拟一个基本的 RESTful API

[{ "description": "模拟一个基本的 RESTful API", "request": {  "uri": "/hello2",  "method": "post",  "headers": {   "Content-Type": "application/json",   "Accept": "application/json",   "token": "header.playload.signature",   "Accept-Charset": "utf8"  },  "cookies": {   "login": "true"  },  "json": {   "name": "zhangsan",   "age": 13  } }, "response": {  "json": {   "message": "测试成功"  },  "latency": {   "duration": 2,   "unit": "second"  },  "headers": {   "Content-Type": "application/json",   "token": "new-header.new-playload.new-signature"  },  "cookies": {   "login": {    "value": "true",    "domain": "localhost",    "secure": "true",    "httpOnly": "true",    "path": "/"   }  } }}]
  • method:请求方法
  • headers:请求头
  • cookies:请求 Cookies
  • json:请求体的一种类型(还有 froms 表单等类型)
  • response 返回值的 headers 、jsoncookies 也类似
  • latency 模拟服务器卡顿(因为模拟的后端 API 返回数据几乎是瞬间的,这里我们让其卡顿 2 秒)

测试

这里我们使用 GitHub 上面开源免费的 API 测试软件 Postman 进行测试

(1)url、请求方法、请求头和 Cookies设置

(2)请求体(json)设置

(3)测试效果

点击 Send 发送,并在下方 response 查看测试效果

3.3 附件下载

有时候我们需要模拟文件下载,moco 如何实现呢?

[{ "description": "moco  附件下载", "request": {  "uri": "/hello" }, "response": {  "attachment":{   "filename": "demo.txt",   "file": "demo.txt"  } }}]

文件目录

├── hello.json                             // API 接口配置文件├── moco-runner-1.1.0-standalone.jar       // 模拟 API 的工具├── demo.txt                               // 要下载的文件,这里可以使用相对路径

localhost:9999/hello 即可下载 demo.txt 文件

3.4 轮询数据

如果我们刷新页面想获得不同的内容 moco 如何实现呢?

[{ "description": "moco 轮询数据", "request": {  "uri": "/hello" }, "response": {  "cycle": [{    "text": "hello 1"   },   {    "text": "hello 2"   },   {    "text": "hello 3"   }  ] }

}]

访问 localhost:9999/hello 会依次得到如下内容

hello 1hello 2hello 3hello 1hello 2...

3.5 重定向

有时候我们想重定向页面 moco 如何实现呢?

[{ "description": "moco 重定向", "request": {  "uri": "/hello" }, "redirectTo": "https://hellogithub.com"}]

访问 localhost:9999/hello 会自动重定向到 https://hellogithub.com

3.6 正则表达式

moco 还支持一些运算符,比如正则表达式。

[{ "description": "moco 正则表达式", "request": {  "uri": {   "match": "/hello/\\w*"  } }, "response": {  "text": "Hello GitHub" }}]

可以通过正则表达式匹配的链接访问,比如

localhost:9999/hello/jarvanlocalhost:9999/hello/bmft

3.7 使用模板

有的时候我们的返回参数依赖于请求参数(比如编码类型),这个时候我们就可以用 template 模板来实现,我们可以在模板中通过 req 来表示发送的请求 。

{    "description": "moco 使用模板",    "request": {        "uri": "/hello",       "method": "post"    },    "response": {        "text": {            "template": "${req.method}"        }    }}

返回的值是

{  "text": "post"}

四、最后

看到这里,想必你已经了解开源项目 moco 的基本使用了,是不是觉得很有意思?这里给出一个小建议,如果想真正使用这个开源项目 moco,建议参考官方文档去「实践」,这是最快捷,最有效的使用开源项目的办法。「实践」就是巩固的最佳方法,希望你能在实践中体验设计程序的快乐!

至此,感谢热爱开源的小伙伴们的阅读。HelloGitHub 会定时不断介绍 GitHub 上有趣的开源免费的项目,如果你对开源项目感兴趣,那就关注我们收到第一时间的文章推送吧。

(0)

相关推荐

  • 干货|31类API安全测试的小技巧总结

            随着RESTful API.GraphQL API等API技术的发展,掌握API安全技术是渗透测试工程师的一项基本技能,在渗透测试过程中会用到各种API安全工具和技巧,其中API安全小 ...

  • python笔记25-mock-server之moco环境搭建

    前言 mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自 ...

  • postman使用教程2-发 post 请求(json和urlencoded)

    前言 使用 postman 发送 http 协议 post 请求,两种请求参数类型application/json 和 application/x-www-from-urlencoded. appli ...

  • Asp.netCore RESTful WebApi 小结

    上篇文章记录了WebApi的概念以及简单的认知WebApi,今天来探究下它的适用场景以及怎么去用它. 先简单聊一下WebApi与用得比较多的WCF.WebService各自的特点: 一.WebServ ...

  • 前后端分离Nginx转发

    前后端分离中Nginx作为web前端容器,需要访问后端接口通常需要通过路径转发,直接访问后端API会造成跨域问题,配置文件如下 server { listen 80; server_name loca ...

  • 如何编写有效的接口测试?

    测试工程师是一个高技术含量的岗位,但现在不少人误以为测试工程师就是"点工",拿到软件"点点点",就可以完成测试了,没啥技术含量,而一些测试工程师错误的工作方法也 ...

  • 100道接口测试面试题收好了!

    HTTP, HTTPS协议 什么是DNS HTTP协议 怎么抓取HTTPS协议 说出请求接口中常见的返回状态码 HTTP协议请求方式 HTTP和HTTPS协议区别 HTTP和HTTPS实现机有什么不同 ...

  • 二、如何使用postman做接口测试笔记(二)

    常用的接口测试工具主要有以下几种: Postman: 简单方便的接口调试工具,便于分享和协作.具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,Mock Server, 接口文档, ...

  • 一、如何使用postman做接口测试笔记一

    一.什么是接口测试 前端(客户端):Android.ios.web 后端(服务端):java.js.css 接口测试即功能测试,接口是用来连接客户端和服务端的,一般接口返回的数据都是json格式 二. ...

  • 【面试】如何回答接口测试怎么进行

    (个人面试时经常回答的)我觉得应该从以下方面入手回答 为什么做接口测试(概述),什么时候开始做接口测试(流程),怎么做接口测试(方法),做了之后得到什么.提升了什么.跟预期对比有什么结果(结果),其实 ...

  • Jmeter和Postman做接口测试的区别,孰优孰劣?

    区别1:用例组织方式 不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式. Jmeter的组织方式相对比较扁平,它首先没有WorkSpace(工作空间)的概念,直接 ...

  • 全网最全软件测试面试题含答案(性能测试 功能测试 接口测试 自动化测试)

    前言 因为篇幅有限,截图不代表所有资料,图中的资料我都放在公众号[程序员阿信]里面了,回复66就可以领取了. 性能测试方面 简述性能测试流程? 1.分析性能需求. 2.制定性能测试计划. 3.编写测试 ...

  • 测试面试题之你们接口测试做了多久?接口测试一般是什么时候做的?

    测试面试题之你们接口测试做了多久?接口测试一般是什么时候做的?

  • 接口测试都要掌握哪些知识?

    ①了解系统及内部各个组件之间的业务逻辑交互: ②了解接口的I/O(input/output:输入输出): ③了解协议的基本内容,包括:通信原理.三次握手.常用的协议类型.报文构成.数据传输方式.常见的 ...