2011-01-11 10 views
16

He escrito pruebas para un proyecto de Django en el que estoy trabajando, pero un accesorio en particular no se carga. El dispositivo se genera utilizando dumpdata y no he manipulado en absoluto. Puedo cargar los datos usando manage.py en ese aparato sin errores. He verificado que los datos se cargaron usando shell y consultando los datos. Esto me está volviendo loco, cualquier ayuda sería muy apreciada.prueba de Django no carga los datos del dispositivo

Aquí está mi archivo de prueba (porciones irrelevantes retirados):

class ViewsFromUrls(TestCase): 
    fixtures = [ 
     'centers/fixtures/test_data.json', 
     'intranet/fixtures/test_data.json', 
     'training/fixtures/test_data.json', #The one that fails to load 
     ] 

    def setUp(self): 
     self.c = Client() 
     self.c.login(username='USER', password='PASS') 

    ... 

    def test_ViewBatch(self): 
     b = Batch.objects.all()[0].ticket_number 
     response = self.c.get(reverse('training.views.view_batch', kwargs={'id':b})) 
     self.assertTrue(response.status_code, 200) 
    ... 
+3

¿Ha intentado cargar simplemente que la luminaria problemática sola? ¿Has intentado cambiar el orden de ellos en la lista de accesorios? Te apuesto un café que está relacionado con el choque de datos en dos dispositivos separados –

+0

Hecho ambos no es bueno. – zsquare

+0

Pruebe con la ruta absoluta al dispositivo, es decir,/home/user/... – Pratyush

Respuesta

7

No estoy seguro de si esto soluciona el problema, pero en este sitio:

https://code.djangoproject.com/wiki/Fixtures

me encontré con una interesante observación:

ves que Django busca appnames/Fixtures y settings.FIXTURE_DIRS y carga la primera coincidencia. Por lo tanto, si usa los nombres como testdata.json para sus dispositivos, debe asegurarse de que ninguna otra aplicación activa use un dispositivo con el mismo nombre. Si no, puede nunca estar seguro de qué accesorios realmente carga. Por lo tanto, es sugirió que prefija sus dispositivos con los nombres de las aplicaciones, p. myapp/fixtures/myapp_testdata.json.

La aplicación de este (cambio de nombre de los accesorios con nombreaplic como prefijo del nombre de archivo), resuelto mi problema (que tenía el mismo problema que se describe aquí)

5

Comprobar si el dispositivo es realmente en el lugar correcto. Desde el docs:

Django buscará en tres lugares para los accesorios:

  1. En el directorio de fixtures de cada aplicación instalada
  2. En cualquier directorio llamado en los FIXTURE_DIRS establecer
  3. En la ruta literal nombrada por el dispositivo
+1

Lo es. Como dije, puedo cargar los datos usando manage.py fine. – zsquare

+1

Si no respondió su pregunta, ¿por qué marcó la respuesta? – machineghost

+0

esta no es la respuesta correcta – Ravi

33

la importación de TestCase django.test:

from django.test import TestCase 

class test_something(TestCase): 
    fixtures = ['one.json', 'two.json'] 
    ... 
    No
  • : import unittest
  • No
  • : import django.utils.unittest
  • Pero: import django.test

Eso es un día de frustración allí mismo. dejar de quejarse - it's in the docs: -/

+2

Mis importaciones son correctas. – zsquare

+1

Heh, y en esa misma página (en la parte superior) te dicen específicamente que "desde django.utils import unittest" :-(Normalmente, los documentos de Django son mucho mejores que eso ... Gracias por la respuesta, me ayudó por completo. – machineghost

+9

-1 para "dejar de quejarse;" parece un poco condescendiente –

2

Una cosa a tener en cuenta, al crear las constantes en el archivo de configuración FIXTURE_DIRS, asegúrese de dejar de lado el líder '/' si tiene un directorio general de los accesorios fuera de la raíz de su proyecto.

Ex:
'/ real/ruta/a/mis/app/accesorios /'

Ahora, en el archivo settings.py:
no funcionará:
FIXTURE_DIRS = '/ fixtures/'

funcionará:
FIXTURE_DIRS = ''/ accesorios

es posible que esto depende de cómo sus otras rutas están configurados, pero fue una de gotcha que me había rascado mi cabeza por un momento. Espero que esto sea útil. Aclamaciones.

Cuestiones relacionadas