2012-10-19 5 views
8

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.

Antwort

0

Ich würde vorschlagen, dass Sie einen Blick auf LiveServerTestCase werfen, wenn Sie einen automatisierten Test-Client zum Ausführen von Funktionstests verwenden.

Stellen Sie dann sicher, dass Sie ein separates Einstellungsmodul haben, mit dem Sie Ihre Tests durchführen können, damit Sellery richtig konfiguriert wird, um Ihre project's database for transport zu verwenden.

1

Mit CELERY_ALWAYS_EAGER = True wird die asynchrone Verarbeitung von Sellery in der Tat umgangen. Um in die Testdatenbank zu schreiben, müssen Sie Ihren selleryd Worker mit den Verbindungseinstellungen zur Testdatenbank starten.

Verwandte Themen