POOL = redis.ConnectionPool(host='localhost', port=6379, db=0)
app = Flask(__name__)
@app.route('/get_cohort_curve/', methods=['GET'])```
def get_cohort_curve():
curve = str(request.args.get('curve'))
cohort = str(request.args.get('cohort'))
key = curve+cohort
return get_from_redis(key)
def get_from_redis(key):
try:
my_server = redis.Redis(connection_pool=POOL)
return json.dumps(my_server.get(key))
except Exception, e:
logging.error(e)
app.run()
我需要为此编写单元测试。
如何测试路线,即获取请求到达正确的位置?
我是否需要在测试中为每个功能创建和销毁应用程序的实例?
我是否需要创建模拟redis连接?
答案 0 :(得分:1)
如果你有兴趣在Flask中运行某些东西,你可以创建一个虚拟环境并测试整个shebang,但在我看来,这是最难的方式。
当我构建我的网站在本地安装Redis时,设置端口然后用适当的密钥在其中存放一些数据是必不可少的。我在iPython(jupyter)笔记本中完成了所有开发工作,这样我就可以在添加Flask的混杂层之前测试函数和与Redis的交互。
然后你设置一个完美的模板,围绕它的固体HTML和CSS来设置网站的样式。如果没有数据作为html页面,那么你继续前进到Flask的python部分。
固化Flask目录。确保将它们放在虚拟环境中,以便您可以从浏览器中调用它们,并将虚拟环境视为服务器。
您创建了app.py
申请。我一次创建了一个页面函数。测试看它是否正确推送变量在页面上发布并调用正确的模板。使用@app.route
如果非常缓慢,一次调试一件,这样你就可以看到你何时以及如何出错。您只能使用redis服务器运行该站点并运行您的虚拟环境。 然后,您必须关闭VE进行编辑并重新启动才能进行测试。起初它很糟糕,但随着时间的推移它会变得死记硬背。
编辑:
如果您真的只想测试路线,那么只需使用@ app.route定义制作app.py并返回页面(您正在调用的模板)。您可以将测试分成小块,但是您必须确保您选择的量子可以作为笔记本或命令行执行中的python脚本执行,或者作为紧凑的功能自包含网站执行....除非你使用我在评论中提到的包:Flask Unit Testing Applications
您需要创建REAL Redis连接,否则您将出错。