TransactionTestCase.multi_db
Django sets up a test database corresponding to every database that is defined in the DATABASES
definition in your settings file. However, a big part of the time taken to run a Django TestCase is consumed by the call to flush
that ensures that you have a clean database at the start of each test run. If you have multiple databases, multiple flushes are required (one for each database), which can be a time consuming activity – especially if your tests don’t need to test multi-database activity.
As an optimization, Django only flushes the default
database at the start of each test run. If your setup contains multiple databases, and you have a test that requires every database to be clean, you can use the multi_db
attribute on the test suite to request a full flush.
For example:
class TestMyViews(TestCase): multi_db = True def test_index_page_view(self): call_some_test_code()
This test case will flush all the test databases before running test_index_page_view
.
The multi_db
flag also affects into which databases the attr:TransactionTestCase.fixtures
are loaded. By default (when multi_db=False
), fixtures are only loaded into the default
database. If multi_db=True
, fixtures are loaded into all databases.
Please login to continue.