Ich arbeite an einer Django-Anwendung. Wir verwenden Sellerie, um Schreibvorgänge in unsere Mongo-Datenbank zu schreiben. Ich versuche, einen Funktionstest (mit Selenium) für eine Funktion zu schreiben, die etwas in Sellerie in die Warteschlange stellt.Wie bekomme ich Djangosellerie, um in die Testdatenbank für meine Funktionstests zu schreiben?
Das Problem ist, dass Sellerie in die Haupt-Mongo-Datenbank anstelle der Testdatenbank schreibt. Wie kann ich meine Funktionstests so einrichten, dass sie mit einer Sellerie-Instanz arbeiten, die in die Testdatenbank schreibt?
Wir verwenden 'django_nose.NoseTestSuiteRunner'
als unsere TEST_RUNNER
.
UPDATE:
Ich habe, um herauszufinden, nicht in der Lage gewesen, wie eine andere Instanz von Sellerie verwendet werden für die Tests, aber ich habe einen Weg zu umgehen Sellerie für die funktionellen Tests gefunden.
In meinem settings.py
:
FUNC_TEST_COMMAND=['functional']
func_test_command = filter(lambda element: element in FUNC_TEST_COMMAND, sys.argv)
if len(func_test_command) > 0:
CELERY_ALWAYS_EAGER = True
Dies ahmt das Verhalten eines AsyncResult
, ohne etwas über ein Nachrichten-Warteschlange zu senden, wenn die Funktionstestsuite ausgeführt wird. (Siehe http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eager für weitere Informationen.)
Diese Lösung ist wahrscheinlich nicht ideal für Funktionstests, da sie eine der Anwendungsschichten ausschneidet.