2012-07-22 7 views
5

Ich habe einen Komponententest geschrieben, der überprüft, ob die Anfangsdaten korrekt geladen sind. Die Node.objects.all().count() gibt jedoch immer 0 zurück, daher scheint es, als ob die Fixtures überhaupt nicht geladen sind. Es gibt keine Ausgabe/Fehler-Meldung in der Befehlszeile, dass Fixtures nicht geladen sind.Geräte, die während des Tests nicht geladen wurden

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) 

die Halterung core_fixture.json enthält 14 Knoten und ich verwende diesen Scheinwerfer als Anfangsdatum Last in die DB mit dem folgenden Befehl:

python manage.py loaddata core/core_fixture.json 

sie in dem Ordner befindet ich in dem vorgesehenen Einstellung FIXTURE_DIRS.

Antwort

5

die Lösung in einem anderen Thread gefunden, 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'] 
    ... 

dies tun bekam ich eine entsprechende Fehlermeldung, sagte, dass Fremdschlüssel verletzt und ich hatte auch die Geräte für die App ist auf „Auth ". Ich exportierte die benötigten Daten mit diesem Befehl:

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

Mit Unittest bekam ich nur die Meldung, dass das Laden von Fixturedaten ausgefallen, was nicht sehr hilfreich war.

Schließlich meine Arbeits Test sieht wie folgt aus:

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

Beim Laden von Fixtures in Testfällen glaube ich nicht, dass Sie mit Django den Verzeichnisnamen angeben können. Versuchen Sie, Ihre fixtures Einstellung ändern zu:

fixtures = ['core_fixture.json',] 

Sie müssen möglicherweise auch Ihre FIXTURE_DIRS Einstellung ändern, das core Verzeichnis aufzunehmen.

Wenn Sie Ihre Tests in verbose mode ausführen, sehen Sie die Fixture-Dateien, die Django zu laden versucht. Dies sollte Ihnen helfen, Ihre Konfiguration zu debuggen.

python manage.py test -v 2 
+0

Danke für die Vorschläge. Ich habe in das FIXTURE_DIRS auch das Kernverzeichnis aufgenommen. Während ich die Fixtures immer noch mit dem Befehl loaddata laden kann, erhalte ich den folgenden Fehler beim Ausführen der Tests: Überprüfen Sie, ob die Initialdaten korrekt geladen werden können ... FAIL –

+0

Es könnte mit meinen Modellsignalen und einem Datenkonflikt zusammenhängen. Während ich das Signal für den Befehl loaddata nicht mit "if not kwargs.get ('raw', False):" ausführe, wird das Signal wahrscheinlich beim Laden der Fixtures innerhalb eines Test-Sets ausgeführt. werde es überprüfen. –

1

Achten Sie darauf, Sie haben Ihre App aufgeführt in INSTALLED_APPS und dass Ihre App enthält models.py Datei.