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ühreGibt 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 ()
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
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.
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:
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:
Tags und Links django unit-testing mongoengine