2012-10-19 21 views
8

Sto lavorando ad un'applicazione Django. Usiamo il sedano per scrivere in coda nel nostro database Mongo. Sto provando a scrivere un test funzionale (usando Selenium) per una funzione che mette in coda qualcosa in sedano.In che modo posso scaricare django seder nel database di test per i miei test funzionali?

Il problema è che il sedano scrive sul database principale di Mongo invece del database di test. Come posso impostare i miei test funzionali per lavorare con un'istanza di sedano che scrive nel database di test?

Stiamo usando 'django_nose.NoseTestSuiteRunner' come nostro TEST_RUNNER.

UPDATE:

non sono stato in grado di capire come utilizzare un'altra istanza di sedano per le prove, ma ho trovato un modo per bypassare sedano per i test funzionali.

Nel mio 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 

Questo simula il comportamento di un AsyncResult senza inviare nulla attraverso una coda di messaggi quando si esegue la suite di test funzionale. (Per ulteriori informazioni, vedere http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eager)

Questa soluzione probabilmente non è l'ideale per i test funzionali, poiché elimina uno dei livelli dell'applicazione.

risposta

0

Suggerisco di dare un'occhiata a LiveServerTestCase se si utilizza un client di test automatico per eseguire test funzionali.

Quindi assicurarsi di disporre di un modulo delle impostazioni separato mentre si eseguono i test in modo da configurare correttamente Celery per l'uso di project's database for transport.

1

Utilizzo di CELERY_ALWAYS_EAGER = True ignora effettivamente l'elaborazione asincrona di Celery. Per scrivere sul database di test, è necessario avviare il proprio operatore celeryd utilizzando le impostazioni di connessione nel database di test.

Problemi correlati