I am getting working outside of request context
when trying to access session
in a test. How can I set up a context when I'm testing something that requires one?
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()
If you want to make a request to your application, use the
test_client
.If you want to test code which uses an application context (
current_app
,g
,url_for
), push anapp_context
.If you want test code which uses a request context (
request
,session
), push atest_request_context
.Both app and request contexts can also be pushed manually, which is useful when using the interpreter.
Flask-Script or the new Flask cli will automatically push an app context when running the
shell
command.Flask-Testing
is a useful library that contains helpers for testing Flask apps.