Wie bekomme ich Djangosellerie, um für meine Funktionstests in die Testdatenbank zu schreiben?

8

Ich arbeite an einer Django-Anwendung. Wir verwenden Sellerie, um Schreibvorgänge in unsere Mongo-Datenbank zu schreiben. Ich versuche, einen Funktionstest (mit Selen) für eine Funktion zu schreiben, die etwas in Sellerie in die Warteschlange stellt.

Das Problem ist, dass Sellerie in die Haupt-Mongo-Datenbank statt in die Testdatenbank schreibt. Wie kann ich meine Funktionstests so einrichten, dass sie mit einer Instanz von Sellerie arbeiten, die in die Testdatenbank schreibt?

Wir verwenden 'django_nose.NoseTestSuiteRunner' als TEST_RUNNER .

UPDATE :

Ich war nicht in der Lage, herauszufinden, wie man eine andere Sellerie für die Tests verwendet, aber ich habe einen Weg gefunden, Sellerie für die Funktionstests zu umgehen.

In meinem settings.py :

%Vor%

Dies ahmt das Verhalten von AsyncResult nach, ohne dass beim Ausführen der funktionalen Testsuite irgendetwas durch eine Nachrichtenwarteschlange gesendet wird. (Siehe Ссылка für weitere Informationen.)

Diese Lösung ist wahrscheinlich nicht ideal für Funktionstests, weil sie eine der Anwendungsschichten ausschneidet.

    
rouan 19.10.2012, 06:38
quelle

2 Antworten

1

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

    
alexdotc 31.10.2012 22:18
quelle
0

Ich schlage vor, dass Sie sich LiveServerTestCase wenn Sie einen automatisierten Test-Client zum Ausführen von Funktionstests verwenden.

Stellen Sie dann sicher, dass Sie über ein separates Einstellungsmodul verfügen, mit dem Sie Ihre Tests durchführen können, um Sellery richtig zu konfigurieren, damit Sie Ihre Projektdatenbank für den Transport .

    
Filip Dupanović 20.10.2012 13:06
quelle