2012-07-22 17 views
5

Napisałem test jednostkowy sprawdzający, czy dane początkowe są poprawnie załadowane. Jednak Node.objects.all().count() zawsze zwraca 0, więc wygląda na to, że urządzenia nie są w ogóle załadowane. W linii poleceń nie ma komunikatu wyjściowego/błędu, który nie został załadowany.Urządzenia nie zostały załadowane podczas testowania.

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) 

urządzenie core_fixture.json zawiera 14 węzłów i używam to urządzenie jako wstępnego ładowania danych do db za pomocą następującego polecenia:

python manage.py loaddata core/core_fixture.json 

Znajdują się one w folderze I przewidzianego w settings.py ustawienie FIXTURE_DIRS.

Odpowiedz

5

znalazł rozwiązanie w innym wątku, 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'] 
    ... 

Spowoduje to mam odpowiedni komunikat o błędzie, twierdząc, że klucz obcy jest naruszone i musiałem również obejmować uchwyty do aplikacji „auth ". I potrzebne dane eksportowane z tym poleceniem:

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

Korzystanie unittest mam tylko komunikat, że wczytywanie danych terminarzy nie, który nie był bardzo pomocny.

Wreszcie moja próba pracy wygląda następująco:

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

Podczas ładowania urządzeń w testowych przypadkach, nie sądzę, że Django pozwala na dołączenie nazwy katalogu. Spróbuj zmienić ustawienie fixtures do:

fixtures = ['core_fixture.json',] 

Być może trzeba zmienić ustawienie FIXTURE_DIRS, jak również, w celu włączenia do katalogu core.

Jeśli uruchomisz testy w verbose mode, zobaczysz pliki urządzeń, które próbuje załadować Django. To powinno pomóc w debugowaniu konfiguracji.

python manage.py test -v 2 
+0

Dzięki za sugestie. Zawarłem w katalogu FIXTURE_DIRS również katalog podstawowy. Podczas gdy wciąż mogę załadować urządzenia za pomocą komendy loaddata, pojawia się następujący błąd podczas uruchamiania testów: Sprawdź, czy dane początkowe mogą być ładowane poprawnie ... FAIL –

+0

Może to być związane z moimi sygnałami modelu i niektórymi konfliktami danych. Podczas gdy nie wykonuję sygnału dla polecenia loaddata z "if not kwargs.get (" raw ", False):", sygnał jest prawdopodobnie wykonywany podczas ładowania urządzeń w zestawie testowym. to sprawdzi. –

1

Upewnij się, że Twoja aplikacja wymienione w INSTALLED_APPS i że aplikacja zawiera models.py pliku.

Powiązane problemy