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 实时遍历日志文件
Apr 12 Python
详解Python文本操作相关模块
Jun 22 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
Python实现k-means算法
Feb 23 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
python+mysql实现个人论文管理系统
Oct 25 Python
关于sys.stdout和print的区别详解
Dec 05 Python
python标准库OS模块详解
Mar 10 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
浅析Django接口版本控制
Jun 26 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php session 检测和注销
2009/03/16 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
python实战教程之自动扫雷
2018/07/13 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python将string转换到float的实例方法
2019/07/29 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
购房协议书
2014/04/11 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
公司开业致辞
2015/07/29 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
小学语文教学反思范文
2016/03/03 职场文书
Python 如何安装Selenium
2021/05/06 Python
入门学习Go的基本语法
2021/07/07 Golang