86

working outside of request context在尝试访问session测试时得到了。当我测试需要上下文的东西时,如何设置上下文?

import unittest
from flask import Flask, session

app = Flask(__name__)

@app.route('/')
def hello_world():
    t = Test()
    hello = t.hello()
    return hello

class Test:
    def hello(self):
        session['h'] = 'hello'
        return session['h']

class MyUnitTest(unittest.TestCase):
    def test_unit(self):
        t = tests.Test()
        t.hello()
4

1 回答 1

164

如果您想向您的应用程序发出请求,请使用test_client.

c = app.test_client()
response = c.get('/test/url')
# test response

如果要测试使用应用程序上下文 ( current_app, g, url_for) 的代码,请推送app_context.

with app.app_context():
    # test your app context code

如果您想要使用请求上下文 ( request, session) 的测试代码,请推送test_request_context.

with current_app.test_request_context():
    # test your request context code

应用程序和请求上下文也可以手动推送,这在使用解释器时很有用。

>>> ctx = app.app_context()
>>> ctx.push()

shellFlask-Script 或新的 Flask cli 将在运行命令时自动推送应用上下文。


Flask-Testing是一个有用的库,其中包含用于测试 Flask 应用程序的帮助程序。

于 2013-06-29T05:43:35.797 回答