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创建系统目录的方法
Mar 11 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
python3.6数独问题的解决
Jan 21 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
Python Process多进程实现过程
Oct 22 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
基于Python绘制个人足迹地图
Jun 01 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
Python自动发送和收取邮件的方法
Aug 12 Python
代码复现python目标检测yolo3详解预测
May 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
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
社区工作者感言
2014/03/02 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
大学生实习推荐信
2015/03/27 职场文书
工作时间调整通知
2015/04/24 职场文书
为自己工作观后感
2015/06/11 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python