Fixed #20550 -- Added ability to preserve test db between runs

This commit is contained in:
Greg Chapple 2014-05-27 22:13:08 +01:00
parent 2e613ea5c5
commit b7aa7c4ab4
10 changed files with 70 additions and 18 deletions

View file

@ -1310,6 +1310,17 @@ The ``--liveserver`` option can be used to override the default address where
the live server (used with :class:`~django.test.LiveServerTestCase`) is
expected to run from. The default value is ``localhost:8081``.
.. django-admin-option:: --keepdb
.. versionadded:: 1.8
The ``--keepdb`` option can be used to preserve the test database between test
runs. This has the advantage of skipping both the create and destroy actions
which greatly decreases the time to run tests, especially those in a large
test suite. If the test database does not exist, it will be created on the first
run and then preserved for each subsequent run. Any unapplied migrations will also
be applied to the test database before running the test suite.
testserver <fixture fixture ...>
--------------------------------

View file

@ -189,6 +189,9 @@ Tests
* The new :meth:`~django.test.SimpleTestCase.assertJSONNotEqual` assertion
allows you to test that two JSON fragments are not equal.
* Added the ability to preserve the test database by adding the :djadminopt:`--keepdb`
flag.
Validators
^^^^^^^^^^

View file

@ -149,6 +149,14 @@ Tests that require a database (namely, model tests) will not use your "real"
Regardless of whether the tests pass or fail, the test databases are destroyed
when all the tests have been executed.
.. versionadded:: 1.8
You can prevent the test databases from being destroyed by adding the
:djadminopt:`--keepdb` flag to the test command. This will preserve the test
database between runs. If the database does not exist, it will first
be created. Any migrations will also be applied in order to keep it
up to date.
By default the test databases get their names by prepending ``test_``
to the value of the :setting:`NAME` settings for the databases
defined in :setting:`DATABASES`. When using the SQLite database engine