Django 1.7 ने डेटाबेस माइग्रेशन पेश किया ।
Django 1.7 में इकाई परीक्षण चलाते समय, यह एक माइग्रेट को बाध्य करता है , जिसमें एक लंबा समय लगता है। इसलिए मैं django के माइग्रेशन को छोड़ना चाहता हूं, और अंतिम स्थिति में डेटाबेस बनाना चाहता हूं।
मुझे पता है कि पलायन को नजरअंदाज करना एक बुरा अभ्यास हो सकता है, क्योंकि कोड के उस हिस्से का परीक्षण नहीं किया जाएगा। लेकिन ऐसा नहीं है: मैं सीआई परीक्षण सर्वर (जेनकींस) में पूर्ण माइग्रेशन चला रहा हूं। मैं केवल अपने स्थानीय परीक्षणों में माइग्रेशन को छोड़ना चाहता हूं, जहां गति मायने रखती है।
कुछ संदर्भ:
Django 1.6 तक , दक्षिण का उपयोग करते समय, मैंने SOUTH_TESTS_MIGRATE सेटिंग का उपयोग किया :
डिफ़ॉल्ट रूप से, दक्षिण की syncdb कमांड गैर-संवादात्मक मोड में चलने पर भी माइग्रेशन लागू करेगी, जिसमें शामिल हैं जब आप परीक्षण चला रहे हैं - यह हर बार आपके परीक्षण चलाने पर हर माइग्रेशन को चलाएगा।
यदि आप चाहते हैं कि टेस्ट रनर माइग्रेट के बजाय सिंकबॉम्ब का उपयोग करें - उदाहरण के लिए, यदि आपके माइग्रेशन को लागू करने में बहुत लंबा समय लग रहा है - बस SOUTH_TESTS_MIGRATE = सेटिंग में गलत सेट करें।
हालाँकि, अब syncdb मौजूद नहीं है, अब यह माइग्रेट है ।
और Django 1.8 से मैं --keepdb पैरामीटर का उपयोग करूंगा :
Thekeepdb विकल्प का उपयोग परीक्षण रन के बीच परीक्षण डेटाबेस को संरक्षित करने के लिए किया जा सकता है। इसके कारण दोनों को बनाने और नष्ट करने की क्रियाओं में फायदा होता है, जो परीक्षणों को चलाने के लिए बहुत कम हो जाता है, विशेष रूप से एक बड़े परीक्षण सूट में। यदि परीक्षण डेटाबेस मौजूद नहीं है, तो इसे पहले रन पर बनाया जाएगा और फिर बाद के प्रत्येक रन के लिए संरक्षित किया जाएगा। टेस्ट सूट चलाने से पहले कोई भी अप्रयुक्त माइग्रेशन टेस्ट डेटाबेस पर भी लागू किया जाएगा।
तो यह सवाल Django 1.7 तक सीमित है।
django-test-without-migrations
पैकेज मेरे लिए वास्तव में काम किया गया है, आप के लिए स्वीकार किए जाते हैं जवाब बदलने के लिए चाहते हो सकता है stackoverflow.com/a/28993456/200224