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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
遗传算法python版
Mar 19 Python
Python读写/追加excel文件Demo分享
May 03 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python实现ip地址的包含关系判断
Feb 07 Python
pycharm全局搜索的具体步骤
Jul 28 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 Python
Python中常用的os操作汇总
Nov 05 Python
python - asyncio异步编程
Apr 06 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
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
js切换div css注意的细节
2012/12/10 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python print出共轭复数的方法详解
2019/06/25 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
初入社会应届生求职信
2013/11/18 职场文书
就业协议书怎么填
2014/09/15 职场文书
飞越疯人院观后感
2015/06/09 职场文书