一、结构设计

上一篇,写了Mock Server的基础实现与被测系统的对接

当我们要mock 的 api越来越多的时候,路由与相关的方法都堆在app.py中就不合适了,不可拔插,可读性也比较差,因此要调整下结构。

期望结果:

  1、app.py中只负责server的配置信息

  2、各个路由与对应的方法可在独立的文件中维护

  3、方便拔插

如下图,resources中分别维护各个API,在app.py中配置server信息及拔插API(这个也可以分成两个文件),common中放公共方法

二、Flask-RESTful

这里我们引入Flask-RESTful来实现一中的内容。

首先安装:pip install Flask-RESTful

1、Resources

Flask-RESTful 提供的最主要的基础就是资源(Resources)。资源(Resources)是构建在 Flask 可拔插视图 之上,只要在你的资源(Resource)上定义方法就能够容易地访问多个 HTTP 方法。

我们看一下API1中的代码:

 __author__ = 'xumj'
from flask_restful import Resource
from flask import request,jsonify def data_to_dict(data):
data_dict = dict((line.split('=') for line in data.split('&')))
return data_dict class API1(Resource):
def get(self):
result = {'code':1000,'result':'test1'}
print 'get request'
return jsonify(result) def post(self):
print 'post request'
data = request.data
if not data or data == 'None':
print 'no data'
result = {'code':500,'result':'','msg':'data is not find'}
return jsonify(result)
else:
data = data_to_dict(data) if not data.has_key('num'):
result = {'code':601,'result':'','msg':'num can not be empty'}
else:
result = {'code':2000,'result':'test2','msg':'num is' + data['num']}
return jsonify(result)
上面的代码废话比较多,我们说下主要的东西:
  首先from flask_restful import Resource
  然后定义类class API1(Resource)
  接着按需在类下定义相应的http方法,如get、post、put、delete(对应请求的method)
2、配置URLS
我们在app.py中配置相关信息:
  首先import Api及resources文件中的对应API类
  然后通过api.add_resource()添加api及对应的URLS(如图,一个API可以对应多个URL),如果某个API的方法有问题或不想开放,则这里不添加就可以。
  PS:这块可独立在一个文件中配置
 #coding:utf-8
__author__ = 'xumj'
from flask import Flask
from flask_restful import Api
from resources.API1 import API1
from resources.API2 import API2 app = Flask(__name__)
api = Api(app)
api.add_resource(API1, '/API1')
api.add_resource(API2, '/API2','/API3') if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=9003)
#host:主机ip,配置为0.0.0.0或主机的ip,则其他同网络环境设备就可以访问该server
#port:端口号,根据实际情况自定义设置,如5000

3、Flask-RESTful还有其他好处,这里先不赘述

Mock Server之flask_restful(python+flask)的更多相关文章

  1. 一个简单的mock server

    在前后端分离的项目中, 前端无需等后端接口提供了才调试, 后端无需等第三方接口提供了才调试, 基于“契约”,可以通过mock server实现调试, 下面是一个简单的mock server,通过pyt ...

  2. Python+Flask搭建mock api server

    Python+Flask搭建mock api server 前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果 ...

  3. Mock Server之与被测系统对接(python+flask)

    第一步:获取入参与返回结果 先通过postman.jmeter.自己写脚本之类的方式请求我们的mock server,试着获取入参与对应的返回值,这里我用的是robotframework + Requ ...

  4. Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Error generating Swagger server (Python Flask) from Swagger editor

    1down votefavorite   http://stackoverflow.com/questions/36416679/error-generating-swagger-server-pyt ...

  6. [转]使用flask实现mock server

    什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现  mock server : http://www. ...

  7. 1分钟搭建极简mock server

    1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果在联调的时候,恰好被调的接口正在开发,怎么办?傻傻的等么,不存在的!这时会搭建一些server来进行mock ...

  8. 基于django rest framework的mock server实践

    网上找了一下mock server的实现,发现python的基本都是基于flask来实现的,因最近在学django,就尝试用drf实现了下: A brief introduction of sui_m ...

  9. Mock Server的搭建

    一.概述 我们系统与第三方开票系统有交互,场景是我们系统请求第三方开票系统,第三方开票系统根据我们的请求数据,生成开票信息然后返回发票号或异常信息,我们根据返回的信息做对应的处理.因为配合上存在一些障 ...

随机推荐

  1. Spring Security教程之Jsp标签(八)

    目录 1.1     authorize 1.2     authentication 1.3     accesscontrollist Spring Security也有对Jsp标签的支持的标签库 ...

  2. Spring Security教程之加点密,加点盐(七)

    一.概述 一般用数据库保存用户的密码都是经过加密,甚少使用明文.同时,加密方式一般采用不可逆的加密方法,如MD5.也要避免相同的密码在加密后有相同的密文,如admin用户的密码为admin,加密后变成 ...

  3. CURL SSL为6的由来

    起初,我直接用方倍工作室之前做微信接口调用时的http_request函数,发现能正常调用微信api的函数获取不了火星天气数据,然后又尝试用file_get_contents,仍然不行 一直出的错就是 ...

  4. 模型区分度衡量指标-KS值

    1.KS值--学习器将正例和反例分开的能力,确定最好的“截断点” KS曲线和ROC曲线都用到了TPR,FPR.KS曲线是把TPR和FPR都作为纵坐标,而样本数作为横坐标.但是AUC只评价了模型的整体训 ...

  5. 修改Centos7用户默认家目录

    vim /etc/default/useradd # useradd defaults file GROUP= HOME=/home INACTIVE=- EXPIRE= SHELL=/bin/bas ...

  6. Sitecore安全性第1部分:自定义角色和权限

    安全性是任何Sitecore构建的重要组成部分.它可确保您的内容作者具有适当级别的访问权限,以管理他们拥有的内容,并授予他们访问不同Sitecore功能的权限. Sitecore附带了许多提供功能访问 ...

  7. AtCoder-arc059 (题解)

    A - いっしょ / Be Together (结论/暴力) 题目链接 题目大意: 有 \(n\) 个数字,要将它们变成相等,对每一个数字最多操作一次,如将 \(a \to b\) 的代价为 \((a ...

  8. 啊哈!算法(第二章)C#实现

    第 1 节 解密 QQ 号——队列   新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问 QQ 号,小哈当然不会直接告诉小哼啦,原因嘛你懂的. 所以小哈给了小哼一串加密过的数字, ...

  9. PowerBuilder学习笔记之1开发环境

    Powerbuilder Classic 12.5开发环境(PB经典 12.5) 教材链接:https://wenku.baidu.com/view/5e087d6ab9f67c1cfad6195f3 ...

  10. JavaScript由来

    在互联网时代,网速还很差劲的时候,表单输入数据的合法性验证需要与服务器交换数据,从而加重了使用者的负担. 网景公司为了解决这种简单问题开发了JavaScript.在1995年2月网景公司在发布自己的浏 ...