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

@ -218,3 +218,27 @@ All the other objects that are context bound can be used the same.
If you want to test your application with different configurations and
there does not seem to be a good way to do that, consider switching to
application factories (see :ref:`app-factories`).
Keeping the Context Around
--------------------------
.. versionadded:: 0.4
Sometimes it can be helpful to trigger a regular request but keep the
context around for a little longer so that additional introspection can
happen. With Flask 0.4 this is possible by using the
:meth:`~flask.Flask.test_client` with a `with` block::
app = flask.Flask(__name__)
with app.test_client() as c:
rv = c.get('/?foo=42')
assert request.args['foo'] == '42'
If you would just be using the :meth:`~flask.Flask.test_client` without
the `with` block, the `assert` would fail with an error because `request`
is no longer available (because used outside of an actual request).
Keep in mind however that :meth:`~flask.Flask.after_request` functions
are already called at that point so your database connection and
everything involved is probably already closed down.