Added support for deferred context cleanup. test_client users can now access the context locals after the actual request if the client is used with a with-block. This fixes #59.

This commit is contained in:
Armin Ronacher 2010-06-03 15:26:07 +02:00
parent 937360877b
commit bc00fd1e83
5 changed files with 111 additions and 3 deletions

View file

@ -58,6 +58,7 @@ class ContextTestCase(unittest.TestCase):
assert index() == 'Hello World!'
with app.test_request_context('/meh'):
assert meh() == 'http://localhost/meh'
assert flask._request_ctx_stack.top is None
def test_manual_context_binding(self):
app = flask.Flask(__name__)
@ -76,6 +77,36 @@ class ContextTestCase(unittest.TestCase):
else:
assert 0, 'expected runtime error'
def test_test_client_context_binding(self):
app = flask.Flask(__name__)
@app.route('/')
def index():
flask.g.value = 42
return 'Hello World!'
@app.route('/other')
def other():
1/0
with app.test_client() as c:
resp = c.get('/')
assert flask.g.value == 42
assert resp.data == 'Hello World!'
assert resp.status_code == 200
resp = c.get('/other')
assert not hasattr(flask.g, 'value')
assert 'Internal Server Error' in resp.data
assert resp.status_code == 500
flask.g.value = 23
try:
flask.g.value
except (AttributeError, RuntimeError):
pass
else:
raise AssertionError('some kind of exception expected')
class BasicFunctionalityTestCase(unittest.TestCase):