Skip to content

Commit

Permalink
Extended explanation on how and are handled in
Browse files Browse the repository at this point in the history
  • Loading branch information
karolmajta committed May 19, 2013
1 parent 0a50311 commit 2df87c4
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions docs/topics/testing/overview.txt
Expand Up @@ -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.
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
issuing any commit or rollback operations on the database, to ensure that the
rollback at the end of the test restores the database to its initial state.
back at the end of the test. Both explicit commits like ``transaction.commit()``
and implicit ones that may be caused by ``Model.save()`` are instead replaced
with a ``nop`` operation. It 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
MyISAM storage engine), ``TestCase`` falls back to initializing the database
by truncating tables and reloading initial data.

.. note::

While all ``commit`` and ``rollback`` operations still *appear* to work
when used in ``TestCase`` they do not cause any side effect, or more
precisely, no actuall commit or rollback will be performed by the database.
This can cause your test to pass or fail unexpectedly. Always use
``TransactionalTestCase`` when testing transactional behavior.

.. note::

.. versionchanged:: 1.5
Expand Down

0 comments on commit 2df87c4

Please sign in to comment.