python / expert
Snippet
Fixture Matrix Loader for Multi-Database Test Suites
When running unit tests across multiple database aliases in Django, overriding `_fixture_setup` permits deterministic routing of specific fixture files to their designated database connections during test initialization.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
from django.test import TransactionTestCasefrom django.core.management import call_commandclass MultiDbFixtureTestCase(TransactionTestCase):databases = {'default', 'replica'}fixtures_map = {'default': ['users.json'], 'replica': ['analytics.json']}def _fixture_setup(self):for db, fixtures in self.fixtures_map.items():for fixture in fixtures:call_command('loaddata', fixture, database=db, verbosity=0)
django
Breakdown
1
class MultiDbFixtureTestCase(TransactionTestCase):
Subclasses TransactionTestCase for multi-db test setups needing explicit database isolation.
2
databases = {'default', 'replica'}
Declares set of database aliases active and cleared during this test case execution.
3
fixtures_map = {'default': ['users.json'], 'replica': ['analytics.json']}
Maps specific database routing aliases to target fixture JSON filenames.
4
def _fixture_setup(self):
Overrides Django test harness internal hook responsible for loading fixtures before test execution.
5
call_command('loaddata', fixture, database=db, verbosity=0)
Executes loaddata management command programmatically targetting specific database parameter.