什么是mock server

mock:英文可以翻译为模仿的,mock server是我们用来解除依赖(耦合),假装实现的技术,比如说,前端需要使用某些api进行调试,但是服务端并没有开发完成这些api,那么前端的工作就被服务端阻塞了,那么就可以使用mock server假装实现这些api,能够返回特定的数据,帮助前端进行页面渲染,当然我们为了方便可以需要与服务端进行约定,约定接口的内容是什么。

restful接口规范

转接阮一峰老师的博客—RESTful API 设计指南:http://www.ruanyifeng.com/blog/2014/05/restful_api.html

Moco-约定uri(一)

moco工具是在github开源的一个项目,可以使用moco工具搭一个简单的mock server方便我们进行调试,github地址:https://github.com/dreamhead/moco,下载下来的是一个jar包,目前的版本是0.11.1,首先我们要编写一个config文件,把我们需要“模拟”的请求和响应写入这个配置文件,配置文件是json格式的,接下来我们写一个比较简单的请求,访问 localhost:12306/hello 接口,返回一个纯文本“moco”,moco工具约定了12306端口,不必纠结,就跟tomcat约定8080端口类似,config.json文件如下,而且json文件要与moco的jar包放在同一个文件夹下。比如博主的目录结构:

G:\学习资料\mock\moco-runner-0.11.1-standalone.jar
G:\学习资料\mock\config.json
[{"request":{"uri":"/hello"},"response":{"text":"moco"}}
]

配置文件比较简单,我们请求接口,返回一个纯文本,启动指令:

>java -jar moco-runner-0.11.1-standalone.jar http -p 12306 -c config.json

这里的http就是http协议, -p 12306 绑定端口号12306, -c config.json读config文件

看到以上的表现,就说明moco已经顺利启动了,我们访问localhost:12306/hello 看到结果如下就说明mock server顺利返回了我们约定的数据”moco”

Moco-约定uri(二)

修改config文件如下,注意这里moco工具能实时监测到json配置文件的变化,并自行重启server

[{"request":{"uri":"/"},"response":{"text":"welcome to Moco"}},{"request":{"uri":"/hello"},"response":{"text":"moco"}}
]

接下来分别访问localhost:12306和12306:12306/hello,结果如下:

Moco-约定get请求

[{"request":{"method":"get","uri":"/get"},"response":{"text":"moco get"}}
]

Moco-约定post请求

[{"request":{"method":"post","uri":"/post"},"response":{"text":"moco post"}}
]

Moco-约定请求参数

[{"request":{"method":"get","uri":"/get","queries":{"id":"12306","name":"moco"}},"response":{"text":"moco queries"}}
]

Moco-约定请求body必须为json格式

[{"request":{"method":"post","uri":"/post","text":{"json":"{\"id\":\"12306\",\"name\":\"moco\"}"}},"response":{"status":"200"}}
]

Moco-约定请求头部

[{"request":{"method":"post","uri":"/post","headers":{"content-type":"application/json","Connection":"keep-alive","Content-Encoding":"gzip"}},"response":{"status":"200"}}
]

Moco-约定返回内容

前面已经看到了response的集中返回内容如text,和status,下面展示一下返回文件和设置文件格式等

[{"request":{"method":"post","uri":"/post",},"response":{"file":"data.js","charset":"GBK","version":"HTTP/1.0"}}
]

Moco-约定返回状态码

见上述的几个json,里面已经包含了返回状态码的使用方式

Moco-在单元测试中的使用(以Python为例)

[{"request":{"method":"get","uri":"/api/hello"},"response":{"text":"hello Savitar!","status":200}}
]

这里模拟一个get请求,返回纯文本“hello Savitar!”和状态码200,先在浏览器访问localhost:12306/api/hello 结果如下图:

说明接口返回没问题,接下来使用Python requests+unittest写一个简单的接口测试用例


#coding=utf-8
'''
@author=Savitar
'''
import unittest
import requestsclass MocoTestApi(unittest.TestCase):def setUp(self):self.url = "http://localhost:12306"def test_moco_test_api(self):api = "/api/hello"url = self.url+apir = requests.get(url)self.assertEqual(r.status_code,200)self.assertEqual(r.text,"hello Savitar!")def tearDown(self):passif __name__ == '__main__':unittest.main()

运行结果如下:

上述代码实现了访问接口,并通过断言返回的状态码和返回内容,断言成功,说明接口测试通过

接口自动化测试:mock server之Moco工具相关推荐

  1. Mock Server利器 - Moco

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52770686  本文出自: [HansChen的博客] Moco介绍 Moco独立运 ...

  2. python mock接口怎么用_python接口自动化测试 - mock模块基本使用介绍

    mock简介 py3已将mock集成到unittest库中 为的就是更好的进行单元测试 简单理解,模拟接口返回参数 通俗易懂,直接修改接口返回参数的值 mock作用 解决依赖问题,达到解耦作用 当我们 ...

  3. java mockserver搭建_自动化测试基础设施(一)——为功能测试构建通用mock server系统...

    版本4(提供多种协议的支持) 估计有人在抱怨,说了这么多这个mock server还只能mock HTTP接口啊,我们的系统中存在HTTP接口,RPC接口,SMTP接口等等.这是mock server ...

  4. 如何用Serverless搭建Mock Server?

    引言 (一)什么是Serverless 无服务器Serverless是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器.云函数(Serverless Cloud Function, ...

  5. Mock神器之Moco使用操作

    MockServer之moco-runner MockServer mock是什么 mock 使用场景 Mock Server框架 moco moco框架介绍及运行 配置https服务 MockSer ...

  6. jemeter python接口自动化测试平台_python接口自动化测试之request

    之前小编写过Rest-assuert接口测试框架,它是基于java的,那么怎么轻轻松松玩转python接口自动化测试呢?今天小编就写写如何使用python Request进行接口自动测试. 学习任何一 ...

  7. 接口自动化测试--入门

    一.什么是接口自动化测试? 让程序或工具代替人工自动化的完成对接口进行测试的一种过程. 二.实现方式: 工具(Jmeter,postman) 代码(python-requests) 三.测试工具缺点: ...

  8. python接口自动化测试书籍_Web接口开发与自动化测试——基于Python语言

    Web接口开发与自动化测试--基于Python语言电子书 本书特色: * Django Web发,通过发发布会签到系统,全面了解Django MTV模型. * Django单元测试,在Web应用中如何 ...

  9. 走进Java接口测试之简单快速的Mock Server Moco

    文章目录 一.引言 二.简介 三.原理 四.使用 1.约定请求 URI 2.约定请求 Queries 3.约定请求 Get 方法 4.约定请求 Post 方法 5.约定请求 Headers 6.约定请 ...

最新文章

  1. 在Android源码树中添加userspace I2C读写工具(i2c-util)
  2. Linux 中echo格式控制、重定向 、管道 | 简介
  3. Elasticsearch 集群平衡配置
  4. 注解@PostConstruct与@PreDestroy
  5. 【转】SQL Server中行列转换 Pivot UnPivot
  6. create-react-app 后需要npm run eject
  7. ACM:《挑战程序设计竞赛》
  8. 本地文件上传到阿里云生成网址
  9. unity shader development[11]
  10. 最难忘的一节计算机课,最让我难忘的一节课作文「共5篇」
  11. 常州2021高考成绩查询,2021江苏常州高考选课分班情况(数据)
  12. 敏捷团队的病与药——阿里健康医药B2B团队敏捷转型手记
  13. javaWeb项目跑起来吧
  14. 各大程序员兼职平台靠谱嘛?这一篇文章就够了
  15. 个人miniblog被迫备份至此
  16. Python中三种表示NA的方式
  17. 服务器账号登录失败怎么回事,远程连接云服务器登录失败是什么原因
  18. 2021年将新推188部动画,爱优腾加上B站你选谁?
  19. P17-Windows与网络基础-Windows文件共享
  20. ARP request或reply包丢失导致速率下降优化

热门文章

  1. 盘点|国内5款主流低代码开发平台介绍
  2. DRGs 用sql语句如何查出医院超标准收费的一则案例
  3. python 直接用账号密码cookie登陆人人网获取页面
  4. Hadoop数据压缩
  5. 自定义View学习——九宫格解锁(LockPatternView)
  6. 9宫格解锁 android_手机九宫格解锁密码忘记了怎么办?忘记安卓九宫格解锁密码解决方法...
  7. Section 17 : Navigation View and List
  8. Mathematica 显示连分数的4种方法
  9. PC键盘和苹果键盘的按键功能对照
  10. 百度site网址显示完整站点信息的分析