2016-09-08 9 views
0

In meinem Projekt verwende ich mehrere Datenbanken, 3 um genau zu sein. Eine Standarddatenbank und zwei Referenzdatenbanken (ein anderer Host), die von unserem Daten-Team mit Strom versorgt und aktualisiert werden. Ich verwende 4 Tabellen aus 2 externen Datenbanken, die mit ./manage.py inspectdb überprüft wurden. Sie sind auf managed=False eingestellt Alles funktioniert gut, meine Anwendung funktioniert wie erwartet und geplant.Django und Pytest, mehrere Datenbanken, Löschen beibehalten

Jetzt beginnt der Spaß, ich muss Tests schreiben. Ich möchte meine Datenbanken nicht löschen. Ich muss von ihnen lesen, ich möchte keine Fixtures erstellen. Jedes Mal, wenn ich versuche, pytest oder benutzerdefinierte Django-Tests zu verwenden, versucht es, meine Datenbanken zu löschen, neu zu erstellen, Migrationen auszuführen und so weiter.

Wie kann ich das bewahren? Entweder in Py- oder Djangotests? Ich habe versucht, --re-usedb und paar andere Params.

Dies ist meine Datenbankeinstellungen (Teile, die hochgeladen werden können)

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'default_db', 
     'USER': 'default_usr', 
     'PASSWORD': 'default_pass', 
     'HOST': 'postgres.somehost.com', 
     'SUPPORTS_TRANSACTIONS': True, 
    }, 
    'geolocations': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'OPTIONS': { 
      'options': '-c search_path=some_schema' 
     }, 
     'NAME': 'geo_name', 
     'USER': 'geo_user', 
     'PASSWORD': 'geo_password', 
     'HOST': 'some-host.domain.com', 
     'SUPPORTS_TRANSACTIONS': True, 
    }, 
    'eoc': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'OPTIONS': { 
      'options': '-c search_path=another_schema' 
     }, 
     'NAME': 'eco_name', 
     'USER': 'eoc_user', 
     'PASSWORD': 'eoc_', 
     'HOST': 'some-another-host.domain.com', 
     'SUPPORTS_TRANSACTIONS': True, 
    } 
} 

Antwort

0

So eine ‚--no-Migrationen‘ Flag hinzuzufügen, um innerhalb von pytest.ini sollten Sie in der Lage sein, diese Migrationen, um sicherzustellen, werden nicht gemacht. Mit einem Pytest-Marker pytest documentation sollten Sie Zugriff auf Ihre Datenbank haben.

Die Marke, die Sie brauchen, ist:

pytestmark = pytest.mark.django_db