Mock Server之与被测系统对接(python+flask)
第一步:获取入参与返回结果
先通过postman、jmeter、自己写脚本之类的方式请求我们的mock server,试着获取入参与对应的返回值,这里我用的是robotframework + RequestsLibrary
mock server代码如下,其中多import了request,g,jsonify
#coding:utf-8
from flask import Flask,request,g,jsonify
app = Flask(__name__) # 返回结果
@app.before_request
def set_result():
g.test_result1 = 'hello world'
g.test_result2 = {'code':1000,'result':'test'}
#定义路由
@app.route('/api/test', methods=['GET'])
def get_request():
print 'get request'
print request.args.to_dict()
print request.args.get('a')
print request.values.to_dict()
print request.values.get('a')
return g.test_result1 @app.route('/api/test2', methods=['POST'])
def post_request():
print 'post request'
print request.get_data()
print request.data
print request.values.get('a')
return jsonify(g.test_result2) if __name__ == '__main__':
#host:主机ip,配置为0.0.0.0或主机的ip,则其他同网络环境设备就可以访问该server
#port:端口号,根据实际情况自定义设置,如5000
app.run(debug=True,host='0.0.0.0',port=9003)
①先试下get_request,预期返回'hello world',robotframework脚本如下:
执行结果,返回值如下,与预期结果一致:

后台打印如下,各方法获取入参如下:

②再试下post_request,预期返回{'code':1000,'result':'test'},robotframework脚本如下:

执行结果,返回值如下,与预期结果一致:

后台打印如下,各方法获取入参如下:

第二步:让开发在本地修改配置文件
再看一下mock server的图

我们的目的是要测试被测系统自身的处理逻辑+与外部服务的交互,我们前面准备了server
第一步搞定了获取入参与返回值,那么下一步就是要搞定被测系统与server之间的连接。
因此先让开发在本地修改配置文件,把本来请求外部服务的地址修改成我们的server的,这样我们可以通过浏览器操作他的本地,看是否请求我们的server。
PS1:这里可以用特定的单据操作,先无视入参,构造对应的返回值。
PS2:注意系统请求头的Content-Type是什么。
当为application/x-www-form-urlencoded或者multipart/form-data的时候,也就是我们
所谓表单提交,访问request.form会返回一个包含解析过的的表单对象的 MultiDict,而request.data是空的。
当flask遇到不能处理的mimetype时,请求的数据就不能被其它方式正常解析,这些方式包括request.form、request.json和request.files这几个常用的用来访问数据的属性。这时就把数据作为字符串存在request.data中。
这里注意一下request.json需要application/json。
PS3:系统庞大的话,让开发直接连测试环境数据库或者用copy的测试环境的数据库
Mock Server之与被测系统对接(python+flask)的更多相关文章
- Mock Server的搭建
一.概述 我们系统与第三方开票系统有交互,场景是我们系统请求第三方开票系统,第三方开票系统根据我们的请求数据,生成开票信息然后返回发票号或异常信息,我们根据返回的信息做对应的处理.因为配合上存在一些障 ...
- 我的第一个开源作品Kiwis2 Mock Server
我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...
- [转]使用flask实现mock server
什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现 mock server : http://www. ...
- Mock Server之flask_restful(python+flask)
一.结构设计 上一篇,写了Mock Server的基础实现与被测系统的对接 当我们要mock 的 api越来越多的时候,路由与相关的方法都堆在app.py中就不合适了,不可拔插,可读性也比较差,因此要 ...
- Mock Server之接口信息从DB获取
上一篇,写了Mock Server的基础实现与被测系统的对接 当我们mock的接口信息.返回值等时不时维护时,都要在代码中编辑,那体验就不太好了,如果这些可以直接在浏览器编辑就好了. 因此对后端部分做 ...
- Python接口测试实战5(下) - RESTful、Web Service及Mock Server
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- Mock Server实践
转载自 https://tech.meituan.com/mock-server-in-action.html 背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过R ...
- 使用RAP搭建前端Mock Server
转载自:<前后端分离--构建前端Mock Server--windows部署rap>http://www.cnblogs.com/dothin/p/5361883.html mock:模拟 ...
- Mock Server 入门
Mock Server介绍 什么是mock ? 我在去年的时候介绍一篇幅 python mock的基本使用,http://www.cnblogs.com/fnng/p/5648247.html 主要是 ...
随机推荐
- 9.第一个vue-cli项目
1.什么是vue-cli vue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板; 预先定义好的目录结构及基础代码,就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目,这 ...
- 【转】HTTPS 如何保证数据传输的安全性?
大家都知道,在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的.但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的. 在客户 ...
- 【ECNU3386】Hunter's Apprentice(多边形有向面积)
点此看题面 大致题意: 按顺序给你一个多边形的全部顶点,让你判断是按顺时针还是逆时针给出的. 多边形有向面积 显然我们知道,叉积可以求出两个向量之间有向面积的两倍. 所以,我们三角剖分,就可以求出四边 ...
- [LeetCode] 406. Queue Reconstruction by Height 根据高度重建队列
Suppose you have a random list of people standing in a queue. Each person is described by a pair of ...
- c# .net core + .net framework mongodb nuget 包
FastNet.Framework.Mongo https://github.com/my-core/FastNet.Framework GH.MongoDb.GenericRepository ht ...
- linux ,查看端口
netstat -antlp | grep java 注:grep java是过滤所有java进程
- 【开源监控】Grafana介绍与安装
Grafana介绍与安装 Grafana介绍 场景:由于业务场景,有多个组织机构.需要在某个组织结构下,完成对本机构下的系统的实时监控以及可视化展示.底层已经用zabbix对监控指标做了数据的采集. ...
- Vue.js 源码分析(十四) 基础篇 组件 自定义事件详解
我们在开发组件时有时需要和父组件沟通,此时可以用自定义事件来实现 组件的事件分为自定义事件和原生事件,前者用于子组件给父组件发送消息的,后者用于在组件的根元素上直接监听一个原生事件,区别就是绑定原生事 ...
- [转帖]编写shell脚本所需的语法和示例
编写shell脚本所需的语法和示例 https://blog.csdn.net/CSDN___LYY/article/details/100584638 在说什么是shell脚本之前,先说说什么是sh ...
- [转帖]k8s 中的服务如何沟通
k8s 中的服务如何沟通 https://www.jianshu.com/p/9fae09876eb7 本文将介绍 k8s 中的服务如何相互访问,例如后端服务访问数据库,不同类型的服务间的相互访问.并 ...