Browse Source

Merge branch 'test-client-kwargs'

Fix #992
pull/992/merge
Markus Unterwaditzer 10 years ago
parent
commit
050a659c2f
  1. 7
      CHANGES
  2. 22
      flask/app.py

7
CHANGES

@ -8,6 +8,9 @@ Version 1.0
(release date to be announced, codename to be selected) (release date to be announced, codename to be selected)
- Added `**kwargs` to :meth:`flask.Test.test_client` to support passing
additional keyword arguments to the constructor of
:attr:`flask.Flask.test_client_class`.
- Added ``SESSION_REFRESH_EACH_REQUEST`` config key that controls the - Added ``SESSION_REFRESH_EACH_REQUEST`` config key that controls the
set-cookie behavior. If set to `True` a permanent session will be set-cookie behavior. If set to `True` a permanent session will be
refreshed each request and get their lifetime extended, if set to refreshed each request and get their lifetime extended, if set to
@ -20,8 +23,8 @@ Version 1.0
- Added :meth:`flask.Config.from_json`. - Added :meth:`flask.Config.from_json`.
- Added :attr:`flask.Flask.config_class`. - Added :attr:`flask.Flask.config_class`.
- Added :meth:`flask.config.Config.get_namespace`. - Added :meth:`flask.config.Config.get_namespace`.
- Added ``TEMPLATES_AUTO_RELOAD`` config key. If disabled the - Added ``TEMPLATES_AUTO_RELOAD`` config key. If disabled the
templates will be reloaded only if the application is running in templates will be reloaded only if the application is running in
debug mode. For higher performance it’s possible to disable that. debug mode. For higher performance it’s possible to disable that.
- Added a workaround for a limitation in Python 3.3's namespace loader. - Added a workaround for a limitation in Python 3.3's namespace loader.
- Added support for explicit root paths when using Python 3.3's namespace - Added support for explicit root paths when using Python 3.3's namespace

22
flask/app.py

@ -821,7 +821,7 @@ class Flask(_PackageBoundObject):
# without reloader and that stuff from an interactive shell. # without reloader and that stuff from an interactive shell.
self._got_first_request = False self._got_first_request = False
def test_client(self, use_cookies=True): def test_client(self, use_cookies=True, **kwargs):
"""Creates a test client for this application. For information """Creates a test client for this application. For information
about unit testing head over to :ref:`testing`. about unit testing head over to :ref:`testing`.
@ -844,6 +844,20 @@ class Flask(_PackageBoundObject):
rv = c.get('/?vodka=42') rv = c.get('/?vodka=42')
assert request.args['vodka'] == '42' assert request.args['vodka'] == '42'
Additionally, you may pass optional keyword arguments that will then
be passed to the application's :attr:`test_client_class` constructor.
For example::
from flask.testing import FlaskClient
class CustomClient(FlaskClient):
def __init__(self, authentication=None, *args, **kwargs):
FlaskClient.__init__(*args, **kwargs)
self._authentication = authentication
app.test_client_class = CustomClient
client = app.test_client(authentication='Basic ....')
See :class:`~flask.testing.FlaskClient` for more information. See :class:`~flask.testing.FlaskClient` for more information.
.. versionchanged:: 0.4 .. versionchanged:: 0.4
@ -853,11 +867,15 @@ class Flask(_PackageBoundObject):
The `use_cookies` parameter was added as well as the ability The `use_cookies` parameter was added as well as the ability
to override the client to be used by setting the to override the client to be used by setting the
:attr:`test_client_class` attribute. :attr:`test_client_class` attribute.
.. versionchanged:: 1.0
Added `**kwargs` to support passing additional keyword arguments to
the constructor of :attr:`test_client_class`.
""" """
cls = self.test_client_class cls = self.test_client_class
if cls is None: if cls is None:
from flask.testing import FlaskClient as cls from flask.testing import FlaskClient as cls
return cls(self, self.response_class, use_cookies=use_cookies) return cls(self, self.response_class, use_cookies=use_cookies, **kwargs)
def open_session(self, request): def open_session(self, request):
"""Creates or opens a new session. Default implementation stores all """Creates or opens a new session. Default implementation stores all

Loading…
Cancel
Save