Python 在类中封装flask api以进行测试
我过去曾构建过flask API,但我从未享受过在一个项目中的奢侈,在这个项目中,我被允许在进行测试驱动开发的同时进行测试驱动开发。现在我是 我读过的每一个how-to都显示FlaskAPI是以一种绝对非面向对象的风格定义的。这使得编写单元测试非常困难,因为无法将可选参数或测试特定参数传递到实例化的api中 例如,本博客解释了为flask api创建单元测试的一种方法: 博客在测试模式下设置一个环境变量,脚本监视该变量,并在找到该变量时改变其行为。这对我来说似乎很不明智。让源代码流入操作系统环境是个坏主意的原因有很多。我非常相信封装功能是为了最大限度地提高可移植性,并在模块的开始和结束之间划清界限 为了满足我的编码理念,有人可能会建议我将FlaskAPI封装在一个类中。然而,我不清楚人们会如何做这样的事情。例如,Flask使用装饰器来定义路由:Python 在类中封装flask api以进行测试,python,api,unit-testing,flask,encapsulation,Python,Api,Unit Testing,Flask,Encapsulation,我过去曾构建过flask API,但我从未享受过在一个项目中的奢侈,在这个项目中,我被允许在进行测试驱动开发的同时进行测试驱动开发。现在我是 我读过的每一个how-to都显示FlaskAPI是以一种绝对非面向对象的风格定义的。这使得编写单元测试非常困难,因为无法将可选参数或测试特定参数传递到实例化的api中 例如,本博客解释了为flask api创建单元测试的一种方法: 博客在测试模式下设置一个环境变量,脚本监视该变量,并在找到该变量时改变其行为。这对我来说似乎很不明智。让源代码流入操作系统环
@app.route()
这怎么能适合一个班级呢
我非常感谢任何以面向对象方式开发flask api的人的指导。您可以用
添加url\u规则
取代@app.route
举个例子:
from flask import Flask
class MyFlaskApp:
def __init__(self):
self.app = Flask(__name__)
self.app.add_url_rule('/', 'index', self.index)
def index(self):
pass
这类似于:
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
pass
您可以将
@app.route
的使用替换为添加url\u规则
举个例子:
from flask import Flask
class MyFlaskApp:
def __init__(self):
self.app = Flask(__name__)
self.app.add_url_rule('/', 'index', self.index)
def index(self):
pass
这类似于:
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
pass
看一看,看一看