mongoengine connect () im test.setup.py-Problem

8

Ich möchte in der Lage sein, bedingte connect () zu machen, je nachdem, ob ich Django im Testmodus gestartet habe oder nicht.

in meiner settings.py Ich benutze mongoengine connect () -Methode, um eine Verbindung zu meiner Datenbank herzustellen, aber das Problem ist, dass ich das nicht tun möchte, wenn ich manage.py test

ausführe

Gibt es eine Möglichkeit, dass ich überprüfen kann, ob settings.py aus Tests importiert wird oder nicht, möglicherweise ein Flag.

etwas wie wenn nicht IN_TESTS:     connect ()

    
Ahmed Soliman Farghal 23.01.2011, 16:11
quelle

4 Antworten

14

Ich löse das mit einem benutzerdefinierten Test-Runner. Hier ist ein Beispiel, auf das ich meine Lösung basierend auf: Ссылка

gesetzt habe

Dies hat den Vorteil, dass Sie für jeden Komponententest eine neue Datenbank bereitstellen können.

%Vor%     
Gattster 16.04.2012, 23:55
quelle
3

Obwohl es möglich ist, dies zu tun, ist es einfacher und allgemein üblich, 2 Einstellungsdateien zu haben. Eine mögliche Konfiguration könnte sein:

Sie haben 2 Einstellungsdateien, lsettings.py , die keine Verbindung herstellen, und settings.py , die das tun

%Vor%

Wenn Sie also lokal testen, können Sie:

%Vor%

Und es verbindet sich nicht.

tl; dr: Es ist einfacher, Konfigurationsunterschiede zu verwalten, indem mehrere Konfigurationsdateien sich gegenseitig bedingt importieren, anstatt zu versuchen, bedingte Parameter in der gleichen Einstellungsdatei zu haben. YMMV.

    
Lakshman Prasad 23.01.2011 16:20
quelle
2

Ich bin mir nicht sicher, ob es vollkommen narrensicher ist, aber ich benutze die Tatsache, dass Sie es in einem Test wahrscheinlich mit ./manage.py test von der Kommandozeile gestartet haben, also ist 'test' einer der Befehlszeilenargumente. So funktioniert das:

%Vor%     
Daniel Roseman 23.01.2011 16:53
quelle
1

Was ich tue, ist register_connection zu verwenden und dann die Verbindungen bei Test zu spielen.

In der Datei, die ich die Mongo-Dokumente definiere, habe ich folgendes:

%Vor%

Dann verwende ich in den Tests die Scheinbibliothek , um das Verhalten von Verbindungen zu ändern (das wäre möglich) um eine der Funktionen im Untermodul connection wie get_db ) so zu spielen:

%Vor%     
Jorge E. Cardona 06.05.2012 19:21
quelle