2012-07-30 7 views
7

मेरे पास Django 1.3.1 प्रोजेक्ट के लिए परीक्षण धावक के रूप में django-nose 1.0 स्थापित है। मैं केवल परीक्षण मॉडल के संबंध में निर्देश on the pypi page का पालन कर रहा हूं।डीजेगो-नाक टेस्ट रन के दौरान परीक्षण-केवल मॉडल नहीं बना रहा

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

मैं कई महीनों के मुद्दे के बिना इस testrunner प्रयोग करने के लिए परीक्षण किया है:

यहाँ मेरी settings.py testrunner config है। अब मैं एक अमूर्त वर्ग का परीक्षण करने की कोशिश कर रहा हूं, और मैं केवल परीक्षण मॉडल का उपयोग कर रहा हूं, लेकिन मैंने लिखा विशिष्ट परीक्षण एक त्रुटि फेंकता है।

प्रलेखन के अनुसार, मुझे परीक्षण के दौरान आयात की गई फ़ाइलों में से एक में टेस्ट क्लास को शामिल करने की आवश्यकता है। मेरे पास 'परीक्षण' फ़ोल्डर में बैठे परीक्षण हैं और कई छोटी परीक्षण फ़ाइलों में विभाजित हैं।

from django.tests import TestCase 
from myapp.models import AbstractFoo 

class Foo(AbstractFoo): 
    pass 


class TestFoo(TestCase): 
    def setUp(self): 
     self.foo = Foo.objects.create(name="Tester", 
             description="This is a test", ...) 
    ... [tests follow] 

मैं सेटअप की पहली पंक्ति में एक त्रुटि प्राप्त कर रहा हूँ:

DatabaseError: relation "tests_foo" does not exist 
LINE 1: INSERT INTO "tests_foo" ("name", "description", "display... 

और अगर मैं डाल यहाँ मेरी परीक्षण/model_tests.py (मॉडल और एप्लिकेशन जानबूझकर काम कारणों के लिए नाम बदला) है परीक्षण में ब्रेक पॉइंट और डेटाबेस का निरीक्षण करें, तालिका 'test_foo' (या नाम में 'foo' वाली कोई भी तालिका मौजूद नहीं है)।

परीक्षण-केवल मॉडल लोड क्यों नहीं हो रहा है इसके बारे में कोई भी विचार?

+0

मैं अभी 1.5 के साथ एक ही त्रुटि मिल रही है। आपने इसे कैसे हल किया, कृपया? –

उत्तर

0

यूप, ऐसा लगता है कि यह अभी भी एक समस्या है। Django == 1.6 और Django-नाक == साथ यह देखा 1.3

एक वैकल्पिक हल GitHub पर

प्रासंगिक मुद्दा अपने tests/ फ़ोल्डर में __init__.py में सभी मॉडलों डाल करने के लिए है: django-nose/issues/77

0

आप मॉडल बनाने के लिए की जरूरत है परीक्षण डेटाबेस में, ऐसा करने के लिए आपको माइग्रेशन उत्पन्न करने या मैन्युअल रूप से डेटाबेस में तालिका बनाने की आवश्यकता है। आप दूसरे संस्करण https://github.com/erm0l0v/django-fake-model

की मेरी कार्यान्वयन की जांच कर सकते इस कोड को आपकी अपेक्षा के अनुसार काम करना चाहिए:

from django.tests import TestCase 
from myapp.models import AbstractFoo 

from django_fake_model import models as f 


class Foo(f.FakeModel, AbstractFoo): 
    pass 


@Foo.fake_me 
class TestFoo(TestCase): 
    def setUp(self): 
     self.foo = Foo.objects.create(name="Tester", 
             description="This is a test", ...) 
    ... [tests follow] 
संबंधित मुद्दे