Ich bekomme working outside of request context
beim Versuch, session
in einem Test darauf zuzugreifen . Wie kann ich einen Kontext einrichten, wenn ich etwas teste, für das einer erforderlich ist?
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()
Antworten:
Wenn Sie eine Anfrage an Ihre Bewerbung stellen möchten, verwenden Sie die
test_client
.c = app.test_client() response = c.get('/test/url') # test response
Wenn Sie Testcode wollen , die einen Anwendungskontext verwendet (
current_app
,g
,url_for
), drücken Sie einapp_context
.with app.app_context(): # test your app context code
Wenn Sie einen Testcode wünschen, der einen Anforderungskontext (
request
,session
) verwendet, drücken Sie atest_request_context
.with current_app.test_request_context(): # test your request context code
Sowohl App- als auch Anforderungskontexte können auch manuell übertragen werden, was bei Verwendung des Interpreters hilfreich ist.
>>> ctx = app.app_context() >>> ctx.push()
Flask-Script oder die neue Flask-CLI pushen automatisch einen App-Kontext, wenn der
shell
Befehl ausgeführt wird.Flask-Testing
ist eine nützliche Bibliothek, die Helfer zum Testen von Flask-Apps enthält.quelle
app_app.test_request_context():
und funktioniert hat.app.test_request_context
Ihrer Information , hier ist die Dokumentation für flask.palletsprojects.com/de/1.1.x/api/… .