mirror of https://github.com/django/django.git
Fixed #20316 - Clarified transaction behavior of TestCase.
Thanks uberj@ for the report and lolek09 for the patch.
This commit is contained in:
parent
5a62236b16
commit
dffdca1109
|
@ -925,14 +925,23 @@ to test the effects of commit and rollback:
|
||||||
|
|
||||||
* A ``TestCase``, on the other hand, does not truncate tables after a test.
|
* A ``TestCase``, on the other hand, does not truncate tables after a test.
|
||||||
Instead, it encloses the test code in a database transaction that is rolled
|
Instead, it encloses the test code in a database transaction that is rolled
|
||||||
back at the end of the test. It also prevents the code under test from
|
back at the end of the test. Both explicit commits like
|
||||||
issuing any commit or rollback operations on the database, to ensure that the
|
``transaction.commit()`` and implicit ones that may be caused by
|
||||||
rollback at the end of the test restores the database to its initial state.
|
``Model.save()`` are replaced with a ``nop`` operation. This guarantees that
|
||||||
|
the rollback at the end of the test restores the database to its initial
|
||||||
|
state.
|
||||||
|
|
||||||
When running on a database that does not support rollback (e.g. MySQL with the
|
When running on a database that does not support rollback (e.g. MySQL with the
|
||||||
MyISAM storage engine), ``TestCase`` falls back to initializing the database
|
MyISAM storage engine), ``TestCase`` falls back to initializing the database
|
||||||
by truncating tables and reloading initial data.
|
by truncating tables and reloading initial data.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
While ``commit`` and ``rollback`` operations still *appear* to work when
|
||||||
|
used in ``TestCase``, no actual commit or rollback will be performed by the
|
||||||
|
database. This can cause your tests to pass or fail unexpectedly. Always
|
||||||
|
use ``TransactionalTestCase`` when testing transactional behavior.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
.. versionchanged:: 1.5
|
.. versionchanged:: 1.5
|
||||||
|
|
Loading…
Reference in New Issue