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中的应用之translate和maketrans用法详解
Aug 27 Python
python中global与nonlocal比较
Nov 21 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
python抓取百度首页的方法
May 19 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python与R语言的简要对比
Nov 14 Python
python读取LMDB中图像的方法
Jul 02 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
简单了解python的内存管理机制
Jul 08 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Python读写操作csv和excle文件代码实例
Mar 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
JS实现拼图游戏
2021/01/29 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
python中的编码知识整理汇总
2016/01/26 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python字符串的修改方法实例
2019/12/19 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
留学自荐信
2013/10/10 职场文书
家长对孩子的感言
2014/03/10 职场文书
cf战队收人广告词
2014/03/14 职场文书
老师对学生的寄语
2014/04/09 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
教师求职信怎么写
2015/03/20 职场文书
行政答辩状范文
2015/05/21 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
Django基础CBV装饰器和中间件
2022/03/22 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle