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进阶教程之词典、字典、dict
Aug 29 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python实现的最近最少使用算法
Jul 10 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
简单了解Django模板的使用
Dec 20 Python
Python读取properties配置文件操作示例
Mar 29 Python
python实现点对点聊天程序
Jul 28 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
Jan 03 Python
Django框架安装及项目创建过程解析
Sep 14 Python
python Django框架快速入门教程(后台管理)
Jul 21 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
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python删除不需要的python文件方法
2018/04/24 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
django 微信网页授权登陆的实现
2019/07/30 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
值传递还是引用传递
2015/02/08 面试题
教师业务培训方案
2014/05/01 职场文书
2014年施工员工作总结
2014/11/18 职场文书
运动会广播稿20字
2015/08/19 职场文书
卖车协议书范文
2016/03/23 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技