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 正则式使用心得
May 07 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
使用pip安装python库的多种方式
Jul 31 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
使用keras根据层名称来初始化网络
May 21 Python
Python小白垃圾回收机制入门
Jun 09 Python
keras用auc做metrics以及早停实例
Jul 02 Python
python3中TQDM库安装及使用详解
Nov 18 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
Javascript模板技术
2007/04/27 Javascript
Firefox div高度自适应
2009/04/28 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
详解Python发送邮件实例
2016/01/10 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
linux面试题参考答案(4)
2014/09/21 面试题
股票投资建议书
2014/05/19 职场文书
员工保密协议书
2014/09/27 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
北京青年观后感
2015/06/15 职场文书
python保存图片的四个常用方法
2022/02/28 Python
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技
Springboot中如何自动转JSON输出
2022/06/16 Java/Android