2012-07-22 19 views
5

Ho scritto un test unitario per verificare se i dati iniziali sono stati caricati correttamente. Tuttavia, lo Node.objects.all().count() restituisce sempre 0, quindi sembra che le fixture non vengano caricate affatto. Non ci sono messaggi di errore/errore nella riga di comando che i proiettori non sono stati caricati.Dispositivi non caricati durante il test

from core.models import Node 

class NodeTableTestCase(unittest.TestCase): 
    fixtures = ['core/core_fixture.json'] 
    def setUp(self): 
     print "nothing to prepare..." 

    def testFixture(self): 
     """Check if initial data can be loaded correctly""" 
     self.assertEqual(Node.objects.all().count(), 14) 

l'apparecchio core_fixture.json contiene 14 nodi e sto usando questo apparecchio come un carico di dati iniziale nel db utilizzando il seguente comando:

python manage.py loaddata core/core_fixture.json 

Si trovano nella cartella ho fornito nel settings.py impostazione FIXTURE_DIRS.

risposta

5

trovato la soluzione in un altro thread, answer from John Mee

# Import the TestCase from django.test: 

# Bad: import unittest 
# Bad: import django.utils.unittest 
# Good: import django.test 

from django.test import TestCase 

class test_something(TestCase): 
    fixtures = ['one.json', 'two.json'] 
    ... 

Facendo questo ho ottenuto un messaggio d'errore, dicendo che chiave esterna è violata e ho dovuto includere anche gli infissi per l'app "auth ". Ho esportato i dati necessari con questo comando:

manage.py dumpdata auth.User auth.Group > usersandgroups.json 

Utilizzando unittest ho avuto solo il messaggio che il caricamento dei dati fixture fallito, che non è stato molto utile.

Infine il mio test di funzionamento assomiglia a questo:

from django.test import TestCase 

class NodeTableTestCase2(TestCase): 
    fixtures = ['auth/auth_usersandgroups_fixture.json','core/core_fixture.json'] 

    def setUp(self): 
     # Test definitions as before. 
     print "welcome in setup: while..nothing to setup.." 

    def testFixture2(self): 
     """Check if initial data can be loaded correctly""" 
     self.assertEqual(Node.objects.all().count(), 11) 
1

Quando si caricano dispositivi in ​​casi di test, non penso che Django ti permetta di includere il nome della directory. Provare a cambiare le impostazioni fixtures a:

fixtures = ['core_fixture.json',] 

Potrebbe essere necessario modificare l'impostazione FIXTURE_DIRS pure, per includere la directory core.

Se si eseguono i test in verbose mode, verranno visualizzati i file fixture che Django tenta di caricare. Questo dovrebbe aiutarti a eseguire il debug della tua configurazione.

python manage.py test -v 2 
+0

Grazie per i suggerimenti. Ho incluso anche in FIXTURE_DIRS la directory principale. Mentre riesco ancora a caricare i proiettori con il comando loaddata, ottengo il seguente errore nell'esecuzione dei test: Controlla se i dati iniziali possono essere caricati correttamente ... FAIL –

+0

Potrebbe essere correlato ai segnali del mio modello e ad alcuni conflitti di dati. Mentre non eseguo il segnale per il comando loaddata con "if not kwargs.get ('raw', False):", il segnale viene probabilmente eseguito durante il caricamento dei dispositivi all'interno di un set di test. lo controllerà. –

1

Assicurarsi che avete la vostra applicazione elencati in INSTALLED_APPS e che la tua applicazione contiene models.py file.

Problemi correlati