python / expert
Snippet
Fixture-Matrix-Lader für Multi-Datenbank-Testsuites
Beim Ausführen von Unit-Tests über mehrere Datenbank-Aliase hinweg ermöglicht das Überschreiben von `_fixture_setup` das deterministische Laden spezifischer Fixture-Dateien auf die zugewiesenen Datenbankverbindungen.
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
Erklärung
1
class MultiDbFixtureTestCase(TransactionTestCase):
Leitet von TransactionTestCase ab für Multi-DB-Tests, die explizite Isolierung benötigen.
2
databases = {'default', 'replica'}
Deklariert die Menge aktiver Datenbank-Aliase, die für diesen Test zurückgesetzt werden.
3
fixtures_map = {'default': ['users.json'], 'replica': ['analytics.json']}
Mappt Datenbank-Aliase auf Ziel-Fixture-JSON-Dateinamen.
4
def _fixture_setup(self):
Überschreibt Djangos internen Test-Hook, der für das Laden von Fixtures vor dem Test zuständig ist.
5
call_command('loaddata', fixture, database=db, verbosity=0)
Führt den Befehl loaddata programmgesteuert für ein spezifisches Ziel-Datenbank-Argument aus.