2012-07-22 12 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 नोड्स होता है और मैं निम्न आदेश का उपयोग कर डाटाबेस में एक प्रारंभिक डेटा लोड के रूप में इस स्थिरता का उपयोग कर रहा:

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 

unittest का उपयोग करते हुए मैं केवल संदेश है कि स्थिरता डेटा की लोडिंग में विफल रहा है, जो बहुत ही सहायक नहीं था मिल गया।

अंत में मेरे कार्य परीक्षण इस तरह दिखता है:

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

परीक्षण मामलों में फिक्स्चर लोड करते समय, मुझे नहीं लगता कि Django आपको निर्देशिका नाम शामिल करने की अनुमति देता है। करने के लिए अपने fixtures सेटिंग को बदलने का प्रयास करें:

fixtures = ['core_fixture.json',] 

साथ ही आप अपने FIXTURE_DIRS सेटिंग बदलने के लिए हो सकता है, core निर्देशिका शामिल करने के लिए।

यदि आप verbose mode में अपने परीक्षण चलाते हैं, तो आप उन छवियों को देखेंगे जो Django लोड करने का प्रयास करते हैं। इससे आपको अपनी कॉन्फ़िगरेशन डीबग करने में मदद करनी चाहिए।

python manage.py test -v 2 
+0

सुझावों के लिए धन्यवाद। मैं FIXTURE_DIRS में मूल निर्देशिका भी शामिल था। जबकि मैं अभी भी loaddata कमांड के साथ फिक्स्चर लोड कर सकता हूं, मुझे परीक्षण चलाने में निम्न त्रुटि मिलती है: जांचें कि प्रारंभिक डेटा सही तरीके से लोड किया जा सकता है या नहीं ... FAIL –

+0

यह मेरे मॉडल संकेतों और डेटा के कुछ संघर्ष से संबंधित हो सकता है। जबकि मैं loaddata कमांड के लिए सिग्नल निष्पादित नहीं करता "अगर नहीं kwargs.get ('कच्चा', गलत):", परीक्षण सेट के भीतर जुड़नार लोड करते समय सिग्नल शायद निष्पादित किया जाता है। इसे जांच लेंगे –

1

सुनिश्चित करें कि आप INSTALLED_APPS में सूचीबद्ध और अपने अनुप्रयोग है कि आपका ऐप models.py फ़ाइल है कि सुनिश्चित करें।

संबंधित मुद्दे