测试2个关联的系统接口时,经常会遇到被测试系统或被测app的处理内部处理流程会依赖另一个系统的接口返回结果,这时,
常用的做法就是写一个模拟测试桩,用作返回请求时的结果。java可以用servicelet来实现,而python可以使用flask这个框架来实现,
并且,实现起来也比java相对简单一些。 编程语言的永远第一个示例,hello world from flask import Flask, request    #安装 flask和flask_restful 包
from flask_restful import Api, Resource app=Flask(__name__) #实例化,__name__为系统变量
api=Api(app) #restful API的固定写法
class HiWorld(Resource): #创建一个类,并继承flask_restful.Resource;定义为一个资源
def get(self):
return {'Hello':'World'} api.add_resource(HiWorld,'/Hello_World/a') #将HiWorld类作为数据资源加入到api,‘/Hello_World’为请求资源地址
if __name__=="__main__":
app.run(host='0.0.0.0',port='8585',debug=True) #host='0.0.0.0'表示开放其他机器访问权限,debug=True表示打印调试日志,port为访问端口号
                                #请求默认地址http://127.0.0.1:5000 示例二:多个请求资源
from flask import Flask
from flask_restful import Api,Resource,reqparse,abort app=Flask(__name__)
api=Api(app) todos={
'todo1':{'task':'welcome'},
'todo2':{'task':'to'},
'todo3':{'task':'school'}
} def abort_if_todo_unexist(todo_id): #请求的资源不在todos变量中,返回404
if todo_id not in todos:
abort(http_status_code=404,message="todo{}doesn't exsit".format(todo_id)) #abort提前退出请求,并返回http状态码404 parser=reqparse.RequestParser() #解析url中参数
parser.add_argument('task',type=str) #todo
class Todo(Resource):
def get(self,todo_id): #请求时get的方法,根据url中参数获取资源
abort_if_todo_unexist(todo_id)
return todos[todo_id]
def delete(self,todo_id): #请求时delete的方法,根据url中参数删除资源
abort_if_todo_unexist(todo_id)
del todos[todo_id]
return '',204
def put(self,todo_id): #请求时put的方法,根据url中参数修改资源
args=parser.parse_args()
task={'task':args['task']}
todos[todo_id]=task
return task,201 #todolist
class Todolist(Resource):
def get(self): #请求时get的方法,url没有带参数时,返回所有变量todos的值
return todos
def post(self): #请求时post的方法,url没有带参数时,新增todos[todo_id]的值
args=parser.parse_args()
todo_id=int(max(todos.keys()).lstrip('todo'))+1
todo_id='todo%i'%todo_id
todos[todo_id]={'task':args['task']}
return todos[todo_id],201 api.add_resource(Todolist,'/todos/')
api.add_resource(Todo,'/todos/<todo_id>') #<todo_id>为传入的参数 if __name__=='__main__':
app.run(host='0.0.0.0',port='8585',debug=True)
												

flask微服务框架的初步接触的更多相关文章

  1. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  2. spring cloud 入门,看一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...

  3. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  4. go微服务框架go-micro深度学习(一) 整体架构介绍

    产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目 ...

  5. 微服务框架go-micro

    微服务框架go-micro https://www.cnblogs.com/li-peng/p/9558421.html 产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂 ...

  6. Dubbo Ecosystem - 从微服务框架到微服务生态

    从微服务框架到微服务生态,这是微服务发展的必然趋势,也是Dubbo社区满足开发者更高效的构建微服务体系期望的使命和担当. 近期,Apache Dubbo PPMC 望陶(社区昵称:ralf0131)做 ...

  7. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  8. 微服务框架Demo.MicroServer运行手册

    一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...

  9. 推荐一款 Python 微服务框架 - Nameko

    1. 前言 大家好,我是安果! 考虑到 Python 性能及效率性,Python Web 端一直不温不火,JAVA 和 Golang 的微服务生态一直很繁荣,也被广泛用于企业级应用开发当中 ​本篇文章 ...

随机推荐

  1. 使用Jmeter监测服务器性能指标

    jmeter监控服务器CPU.内存等性能参数,需要安装一些插件 插件名:JMeterPlugins-Extras,JMeterPlugins-Standard 以及ServerAgent. 下载地址: ...

  2. Android 杂谈---ListView 之BaseAdapter

    前言 几种适配器里面相对来说比较简单的一种适配器,在使用时需要实现几个方法,并且也需要对convertView进行优化 此篇文章以使用listView与BaseAdapter来实现表格样式的布局举例( ...

  3. jetbrains的JetBrains PyCharm 2018.3.1破解激活到2100年(最新亲测可用)

    破解补丁激活 之前看了好多的其它的方法感觉都不是很靠谱还是这个本人亲试可以长期有效不仅能激活pycharm.jetbrains的JetBrains PyCharm 2018.3.1破解激活到2100年 ...

  4. Docker打包 Asp.Net Core应用,在CentOS上运行(转)

    转载连接:https://www.cnblogs.com/ibeisha/archive/2017/09/09/netcoreondocker.html 本文主要介绍下运用docker虚拟技术打包As ...

  5. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

  6. newinstance和new的区别

    newinstance将对象创建分为两个步骤,解耦的手段,先调用class.forName加载类,然后再去实例化它 new可以不用加载,不是一定 newinstance作为依赖注入 https://b ...

  7. ubantu中执行docker免sudo方法

    1.添加用户组,如果已存在则不用设置. sudo groupadd docker 2.将用户加入该 group (docker)内 sudo gpasswd -a ${USER} docker 3.重 ...

  8. C#堆和栈

    一.在讲堆栈之前,我们先看看值类型和引用类型: 1,我们看看值类型与引用类型的存储方式: 引用类型:引用类型存储在堆中.类型实例化的时候,会在堆中开辟一部分空间存储类的实例.类对象的引用还是存储在栈中 ...

  9. ListView 上拉加载更多

    ListView 上拉加载更多 首先来个效果图 界面布局 <?xml version="1.0" encoding="utf-8"?> <Re ...

  10. [nodemon] clean exit - waiting for changes before restart

    出现上述日志信息,程序就不能往下运行了. 原因:node程序在初始化的时候就报错了,仔细debug吧...