2010-11-10 16 views
14

Estoy probando una aplicación djang no escrita por mí mismo, que utiliza dos dispositivos: initial_data.json y testing.json. Los dos archivos de dispositivos contienen datos contradictorios (arrojando un error de integridad).No cargue el dispositivo 'initial_data.json' cuando pruebe

Para probar, he especificado TestCase.fixtures = ['testing.json'], pero initial_data.json también está cargado.

¿Cómo puedo evitar cargar initial_data.json (sin renombrarlo) en el caso de prueba?

+0

Espera ... ¿estás escribiendo pruebas para una aplicación que no has escrito? – eternicode

Respuesta

6

Citando de Django Sitio Web:

Si crea un accesorio llamado initial_data [xml/yaml/JSON], que accesorio se cargará cada vez que plazo syncdb.. Esto es extremadamente conveniente, pero tenga cuidado: recuerde que los datos se actualizarán cada vez que ejecute syncdb. Por lo tanto, no use initial_data para los datos que desea editar.

Así que supongo que no hay forma de decir "está bien, no cargue los datos iniciales solo por esta vez". Tal vez podrías escribir un script corto de bash que cambiaría el nombre del archivo. De lo contrario, tendrías que profundizar en el código de Django.

Más información aquí: http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

2

Es posible que desee pensar en si initial_data.json es algo que su aplicación necesita realmente. No es difícil cargar "manualmente" sus datos de producción con ./manage.py loaddata production.json después de ejecutar syncdb (¿con qué frecuencia ejecuta syncdb en producción?), Y haría que cargar su accesorio de prueba sea mucho más fácil.

2

Si usted quiere tener tablas sin datos iniciales, este código le ayudará a:

edición tests.py:

from django.core import management 

class FooTest(TestCase): 

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

esto eliminará sus datos y syncdb de nuevo sin cargar los datos iniciales.

Cuestiones relacionadas