2011-01-05 12 views
13

मैं अपने परीक्षण चलाने के लिए मौजूदा परीक्षण डेटाबेस का उपयोग करने में सक्षम होना चाहता हूं और जब भी मैं परीक्षण चलाने के लिए Django डेटाबेस बना और हटाता हूं। क्या यह संभव है?मैं Django टेस्ट के लिए इसे हर बार बनाने के बजाय डेटाबेस का उपयोग कैसे कर सकता हूं?

+0

आप ऐसा क्यों चाहते हैं? आप डेटाबेस निर्माण का परीक्षण भी करना चाहते हैं ... –

+6

जब इसे बनाने में घंटों लगते हैं। –

+0

आप परीक्षण के लिए अलग-अलग डीबी इंजन चुन सकते हैं (एसक्लाइट के पास तेजी से डीबी सृजन है) –

उत्तर

14

यह संभव है, यहाँ एक तरीका है:

1) अपने स्वयं के परीक्षण धावक देखने here कैसे को देखने के लिए परिभाषित करें।

2) default test runner में अपने कस्टम परीक्षण धावक देखने के लिए, तुम सिर्फ कॉपी कर सकते हैं और कोड अतीत और सिर्फ इस लाइन टिप्पणी: connection.creation.destroy_test_db(old_name, verbosity) जो परीक्षण डेटाबेस को नष्ट करने के लिए जिम्मेदार है, और मुझे लगता है कि आप में connection.creation.create_test_db(..) लाइन रखना चाहिए इस शायद की तरह कुछ को छोड़कर एक कोशिश:

try: 
    # Create the database the first time. 
    connection.creation.create_test_db(verbosity, autoclobber=not interactive) 
except ..: # Look at the error that this will raise when create a database that already exist 
    # Test database already created. 
    pass 

3) setting.py में TEST_RUNNER बाउंड अपने परीक्षण धावक करने के लिए।

4) अब इस तरह अपने परीक्षण चलाने: ./manage.py परीक्षण

+0

तो यह अच्छा लग रहा है लेकिन मुझे अभी भी स्थानीय परीक्षण डीबी संख्या से कनेक्शन स्थापित करने की आवश्यकता है? –

+0

@ रयान डिटज़ेल: मैंने अपने उत्तर के बारे में अधिक जानकारी के लिए संपादित किया है, आपके प्रश्न के बारे में मुझे लगता है कि टेस्ट डेटाबेस के ऊपर दिए गए कोड के साथ पहली बार परीक्षण किया जाएगा कि परीक्षण हाँ चलाया गया है, यह टेस्ट डेटाबेस परमाणु रूप से Django द्वारा बनाया गया है: http://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs#the-test-database – mouad

+0

@mouad, क्या मैं इसे कॉन्फ़िगर कर सकता हूं ताकि यह फिक्स्चर को लोड न करे/इसे फ्लश न करें? –

6

कौन उपयोग कर रहे हैं Django> = 1,8

python manage.py test --keepdb 

--keepdb परीक्षण रन के बीच परीक्षण डेटाबेस संरक्षित रखता है। इसका उपयोग उन कार्यों को बनाने और नष्ट करने का लाभ है जो परीक्षण चलाने के लिए समय कम कर सकते हैं, खासतौर पर उन बड़े परीक्षण सूट में। यदि परीक्षण डेटाबेस मौजूद नहीं है, तो यह पहले रन पर बनाया जाएगा और फिर प्रत्येक बाद के रन के लिए संरक्षित किया जाएगा। टेस्ट सूट चलाने से पहले किसी भी अपरिपक्व माइग्रेशन को टेस्ट डेटाबेस पर भी लागू किया जाएगा।

+0

Django 1.6 के लिए कैसे ?? क्या कोई समान तरीका है ??? –

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

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