mirror of
https://github.com/django/django.git
synced 2025-07-24 05:36:15 +00:00
Fixed #21281 -- Made override_settings act at class level when used as a TestCase decorator.
This commit is contained in:
parent
8b77b64f1c
commit
d89f56dc4d
9 changed files with 73 additions and 27 deletions
|
@ -919,3 +919,11 @@ to construct the "view on site" URL. This URL is now accessible using the
|
|||
``FormMixin`` subclasses that override the ``get_form()`` method should make
|
||||
sure to provide a default value for the ``form_class`` argument since it's
|
||||
now optional.
|
||||
|
||||
Overriding ``setUpClass`` / ``tearDownClass`` in test cases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The decorators :func:`~django.test.override_settings` and
|
||||
:func:`~django.test.modify_settings` now act at the class level when used as
|
||||
class decorators. As a consequence, when overriding ``setUpClass()`` or
|
||||
``tearDownClass()``, the ``super`` implementation should always be called.
|
||||
|
|
|
@ -607,6 +607,25 @@ then you should use :class:`~django.test.TransactionTestCase` or
|
|||
|
||||
``SimpleTestCase`` inherits from ``unittest.TestCase``.
|
||||
|
||||
.. warning::
|
||||
|
||||
``SimpleTestCase`` and its subclasses (e.g. ``TestCase``, ...) rely on
|
||||
``setUpClass()`` and ``tearDownClass()`` to perform some class-wide
|
||||
initialization (e.g. overriding settings). If you need to override those
|
||||
methods, don't forget to call the ``super`` implementation::
|
||||
|
||||
class MyTestCase(TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(cls, MyTestCase).setUpClass() # Call parent first
|
||||
...
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
...
|
||||
super(cls, MyTestCase).tearDownClass() # Call parent last
|
||||
|
||||
TransactionTestCase
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -751,8 +770,8 @@ Then, add a ``LiveServerTestCase``-based test to your app's tests module
|
|||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.selenium = WebDriver()
|
||||
super(MySeleniumTests, cls).setUpClass()
|
||||
cls.selenium = WebDriver()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue