2010-11-10 7 views
14

Sto testando un'app djang non scritta da me, che utilizza due dispositivi: initial_data.json e testing.json. Entrambi i file delle fixture contengono dati in conflitto (generando un errore di integrità).non caricare il dispositivo "initial_data.json" durante il test

Per il test, ho specificato TestCase.fixtures = ['testing.json'], ma anche initial_data.json è stato caricato.

Come evitare di caricare initial_data.json (non rinominandolo) nel banco di prova?

+0

Aspetta ... quindi stai scrivendo dei test per un'app che non hai scritto? – eternicode

risposta

6

Citando Django Sito web:

Se si crea un appuntamento fisso di nome initial_data [xml/YAML/JSON], che apparecchio possa essere caricata ogni volta che si run syncdb.. Questo è estremamente conveniente , ma attenzione: ricorda che i dati verranno aggiornati ogni volta che esegui syncdb . Quindi non utilizzare initial_data per i dati che si desidera modificare .

Quindi credo che non ci sia modo di dire "okay, non caricare i dati iniziali solo una volta". Forse potresti scrivere un breve script bash che rinominerebbe il file. Altrimenti dovresti scavare nel codice Django.

Maggiori informazioni qui: http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

2

Si potrebbe desiderare di pensare se initial_data.json è qualcosa la vostra applicazione ha bisogno in realtà. Non è difficile caricare "manualmente" i dati di produzione con ./manage.py loaddata production.json dopo aver eseguito un syncdb (con quale frequenza si esegue syncdb in produzione, comunque?), E renderebbe molto più facile il caricamento del dispositivo di prova.

2

Se si desidera avere tabelle senza dati iniziali, questo codice vi aiuterà a:

modificare tests.py:

from django.core import management 

class FooTest(TestCase): 

    @classmethod 
    def setUpClass(cls): 
     management.call_command('flush', interactive=False, load_initial_data=False) 

questo eliminerà i dati e le syncdb di nuovo senza caricare dati iniziali.

Problemi correlati