2012-07-22 3 views
5

초기 데이터가 올바르게로드되었는지 확인하는 단위 테스트를 작성했습니다. 그러나 Node.objects.all().count()은 항상 0을 반환하므로 조명기가 전혀로드되지 않은 것처럼 보입니다. 조명기가로드되지 않은 명령 행에는 출력/오류 메시지가 없습니다.테스트 도중 고정 장치가로드되지 않았습니다.

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) 

고정 장치 core_fixture.json 14 개 노드를 포함하고 난 다음 명령을 사용하여 DB로 초기 데이터로드로이기구를 사용하고 있습니다 :

python manage.py loaddata core/core_fixture.json 

그들은 내가에서 제공하는 폴더에있는을 settings.py 설정은 FIXTURE_DIRS입니다.

답변

5

다른 스레드에서 솔루션, 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'] 
    ... 

이렇게 내가 외래 키가 침해되는 것을 말하고, 적절한 오류 메시지를 받았습니다 발견하고 나는 또한 응용 프로그램에 대한 비품을 포함했다 "인증 ". 나는이 명령을 사용하여 필요한 데이터를 내보낼 : 유닛 테스트에 사용

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

나는 고정 데이터의 로딩이 매우 도움이되지 않은, 실패 만이 메시지를 받았습니다.

마지막으로 내 작업 테스트는 다음과 같습니다

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

테스트 케이스에서 조명기를로드 할 때 장고가 디렉토리 이름을 포함하도록 허용하지 않는다고 생각합니다. 에 fixtures 설정을 변경해보십시오 :

fixtures = ['core_fixture.json',] 

당신은뿐만 아니라 당신의 FIXTURE_DIRS 설정을 변경해야 할 수도에서, core 디렉토리를 포함 할 수 있습니다.

verbose mode에서 테스트를 실행하면 장고가로드하려고하는 조명기 파일을 볼 수 있습니다. 이렇게하면 구성을 디버그하는 데 도움이됩니다.

python manage.py test -v 2 
+0

제안 해 주셔서 감사합니다. 나는 또한 FIXTURE_DIRS 코어 디렉토리에 포함시켰다. 아직 loaddata 명령으로 조명기를로드 할 수 있지만 테스트를 실행할 때 다음 오류가 발생합니다. 초기 데이터를 올바르게로드 할 수 있는지 확인합니다 ... FAIL –

+0

내 모델 신호 및 일부 데이터 충돌과 관련 될 수 있습니다. loaddata 명령에 대한 신호를 "if not kwargs.get ('raw', False) :"로 실행하지 않는 반면, 신호는 아마도 테스트 세트 내에서 조명기를로드하는 동안 실행될 것입니다. 그것을 확인합니다. –

1

이 앱은 INSTALLED_APPS에 나열 앱이 models.py 파일을 포함하는했는지 확인하십시오.

관련 문제