Python MOCK SERVER moco模拟接口测试过程解析


Posted in Python onApril 13, 2020

MOCK的意义

1.接口测试等待开发完成接口开发之后再进行,不符合测试的尽早测试的基本原则,我们可以利用MOCK工具来模拟接口,减少对开发的依赖,从而可使测试与开发同步进行

2.接口存在很多依赖关系,现实中,由于一些客观的原因,我们在测试环境所要的测试条件可能无法满足,此时就需要我们用MOCK工具来进行模拟,如网上商城有个支付业务,与工商银行做对接,工商银行只提供正式环境的对接,没有测试环境支持,那我们在测试环境测试就需要利用MOCK工具进行模拟,完成支付业务流

mock工具-moco

官网地址

1.安装配置jdk1.8

2.下载moco jar包:moco-runner-0.10.0-standalone.jar

3.新建配置config.json,在jar包所在目录输入cmd,cmd 输入:java -jar moco-runner-0.10.0-standalone.jar http -p 9999 -c config.json,启动moco mock

jar下输入cmd,如下图:

Python MOCK SERVER moco模拟接口测试过程解析

成功启动mock,如下图

Python MOCK SERVER moco模拟接口测试过程解析

config.json 内容:

[
 {
  "request" :
   {
    "method": "get",
    "uri" : "/1"
   },
  "response" :
   {
    "text" : "mock mo ren"
   }
 }
]

4.浏览器输入http://127.0.0.1:9999/1,打印“mock mo ren”,说明:9999为运行配置的端口,/1为配置文件请求的url,“mock mo ren”为访问url的响应的内容

5.一般mock启动不要用https,https需要证书的,配置起来麻烦

模拟-get

(confing.json配置文件,duocs.json有两条记录,dancs.json有一条记录),执行http://127.0.0.1:9999/cs/duo 显示duocs.json两条记录;

执行http://127.0.0.1:9999/cs/dan 显示 dancs.json一条记录

执行http://127.0.0.1:9999/temp?zw=9 返回:“返回参数中文9”,其中zw=9 ,zw为动态参数,注意返回的值是text类型,目前moco的josn格式不支持中文,text格式可以返回中文,但是意义不大。

如config.json 内容:"text" : {
"template": "返回参数中文${req.queries['zw']}"
}

config.json 内容:

[
 {
  "request" :
   {
    "method": "get",
    "uri" : "/cs/duo"
   },
  "response" :
   {
    "file" : "duocs.json"
   }
 },
 {
  "request" :
   {
    "method": "get",
    "uri" : "/cs/dan"
   },
  "response" :
   {
    "file" : "dancs.json"
   }
 },
 {
  "request" :
   {
    "method": "get",
    "uri" : "/temp"
   },
  "response" :
   {
    "text" : {
     "template": "返回参数中文${req.queries['zw']}"
    }
   }
 }
]

dancs.json 内容:

{
	"name": "yiqiao",
	"age": "30"
}

duocs.json 内容:

[
 {
  "name": "zhangshan",
  "age": "28"
 },
 {
  "name": "lishi",
  "age": "38"
 }
]

模拟-post

config.json 内容:

[
 {
  "request" :
   {
    "method": "post",
    "uri" : "/posts",
    "file": {
     "json": "requestcs.json"
    }
   },
  "response" :
  {
   "json": {"success": "true"}
  }
 }, 
 {
  "request" :
   {
    "method": "put",
    "uri" : "/puts",
    "file": {
     "json": "requestcs.json"
    }
   },
  "response" :
  {
   "json": {"success": "puttrue"}
  }
 },
 {
  "request" :
   {
    "method": "delete",
    "uri" : "/deletes"
   },
  "response" :
  {
   "json": {"success": "deletetrue"}
  }
 }
]

requestcs.json 入参文件内容:

{
	"usename": "test",
	"password" : "test"
}

1.访问post:结合配置文件config.json 内容:url:/posts;入参格式为:"json": "requestcs.json",返回json格式值 "success": "true",如下图postman操作:选择body-raw,选择josn(application/josn),输入URL:http://127.0.0.1:9999/posts,返回 "success": "true"

Python MOCK SERVER moco模拟接口测试过程解析

2.访问put

Python MOCK SERVER moco模拟接口测试过程解析

3.访问delete

Python MOCK SERVER moco模拟接口测试过程解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python统计列表中的重复项出现的次数的方法
Aug 18 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
Python中if elif else及缩进的使用简述
May 31 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python 实现二维列表转置
Dec 02 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
浅析python连接数据库的重要事项
Feb 22 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 #Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 #Python
Python selenium文件上传下载功能代码实例
Apr 13 #Python
20行Python代码实现视频字符化功能
Apr 13 #Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 #Python
jupyter notebook实现显示行号
Apr 13 #Python
Python文件时间操作步骤代码详解
Apr 13 #Python
You might like
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php session 写入数据库
2016/02/13 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Python2与Python3的区别实例分析
2019/04/11 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
Reformation官网:美国女装品牌
2018/09/14 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
物流司机岗位职责
2013/12/28 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
结婚司仪主持词
2015/06/29 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python
python对文档中元素删除,替换操作
2022/04/02 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android