2012-07-22 16 views
5

Escribí una prueba de unidad comprobando si los datos iniciales se cargaron correctamente. Sin embargo, el Node.objects.all().count() siempre devuelve 0, por lo que parece que los dispositivos no se cargan en absoluto. No hay mensaje de salida/error en la línea de comandos que los dispositivos no están cargados.Fixtures no cargados durante la prueba

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) 

el accesorio core_fixture.json contiene 14 nodos y estoy usando este accesorio como una carga de datos inicial en la db usando el comando siguiente:

python manage.py loaddata core/core_fixture.json 

Se encuentran en la carpeta que he proporcionado en el settings.py configuración FIXTURE_DIRS.

Respuesta

5

encontrado la solución en otro hilo, 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'] 
    ... 

Hacer esto tengo un mensaje de error adecuado, diciendo que es violada clave externa y he tenido que incluir también los accesorios para la aplicación "auth ". He exportado los datos necesarios con este comando:

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

Usando unittest que tiene sólo el mensaje de que la carga de los datos del accesorio no, que no era muy útil.

Finalmente mi prueba de trabajo se parece a esto:

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

Al cargar dispositivos en casos de prueba, no creo que Django le permita incluir el nombre del directorio. Pruebe a cambiar la configuración a fixtures:

fixtures = ['core_fixture.json',] 

Puede que tenga que cambiar la configuración de FIXTURE_DIRS así, para incluir el directorio core.

Si ejecuta sus pruebas en verbose mode, verá los archivos del dispositivo que Django intenta cargar. Esto debería ayudarlo a depurar su configuración.

python manage.py test -v 2 
+0

Gracias por las sugerencias. Incluí en FIXTURE_DIRS también el directorio central. Mientras que todavía puedo cargar los dispositivos con el comando loaddata, obtengo el siguiente error al ejecutar las pruebas: Compruebe si los datos iniciales se pueden cargar correctamente ... FAIL –

+0

Podría estar relacionado con las señales de mi modelo y algunos choques de datos. Mientras que no ejecuto la señal para el comando loaddata con "if not kwargs.get ('raw', False):", la señal probablemente se ejecuta al cargar los dispositivos dentro de un conjunto de prueba. lo verificará –

1

Asegúrese de que ha enumerado en su aplicación INSTALLED_APPS y que su aplicación contiene models.py archivo.

Cuestiones relacionadas