2009-03-05 13 views
7

जैसा कि मैं अपने django अनुप्रयोग के लिए यूनिट परीक्षण विकसित कर रहा हूं, मुझे लगता है कि मैं खुद को manage.py परीक्षण बार-बार चला रहा हूं। मैं एक MySQL बैकएंड का उपयोग कर रहा हूं और इस परियोजना में कई मॉडल हैं, इसलिए सभी परीक्षण डेटाबेस बनाने के लिए रैंप अप समय लगभग 30 सेकंड है।मैं django यूनिट परीक्षण (manage.py के माध्यम से) कैसे चला सकता हूं तेज़

डेटाबेस तालिकाओं को बनाए रखकर और "manage.py test" कमांड के रनों के बीच-साथ सभी रिकॉर्ड्स को साफ़ करके मैं प्रत्येक इकाई परीक्षण को तेज़ी से कैसे उपयोग कर सकता हूं?

उत्तर

7

नोट कि आपको हर बार पूरे टेस्ट सूट को चलाने की ज़रूरत नहीं है। आप manage.py test appname (या manage.py test app1 app2 ... के साथ एक साथ कई ऐप्स के लिए) एक ही ऐप के लिए टेस्ट सूट चला सकते हैं।

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

+0

फिर भी, यह अभी भी INSTALLED_APPS में प्रत्येक मॉड्यूल के लिए डेटाबेस बनाता है, जो कि अधिक समय लेता है। – Bryce

4

मैं इसे करने की कोशिश नहीं की है, लेकिन यह है कि में हाल ही में जांच परीक्षण लेनदेन है कि फिर वापस लुढ़का कर रहे हैं अंदर चलाने के लिए अनुमति देकर मदद करने के लिए माना जाता है वहाँ था:

Documentation और developer commentary

1

आप एसक्लाइट डेटाबेस बैकएंड का उपयोग करके अपने परीक्षण चला सकते हैं। यह पूर्ण परीक्षण चलाने के लिए उपयुक्त नहीं है (क्योंकि डीबी अलग है), लेकिन सैनिटी जांच के लिए यह बहुत समय बचाता है। देखें: http://mindlesstechnology.wordpress.com/2008/08/16/faster-django-unit-tests/

1

मैं अपने MySQL डेटाबेस के लिए रैम-डिस्क का उपयोग करता हूं, तेज़ यह भी वर्णन नहीं करता है, केवल उस विशिष्ट ऐप के भीतर विशिष्ट परीक्षण का परीक्षण करने के साथ संयुक्त रूप से आप नाटकीय रूप से परीक्षण समय में कटौती कर सकते हैं। वहां कुछ स्क्रिप्ट हैं जो आपके डेटाबेस के लिए रैमडिस्क के निर्माण को स्वचालित कर देंगे, मैं mysql-ramdisk.py का उपयोग करता हूं जो मेरे सहकर्मियों में से एक पकाया जाता है, यह संस्करण मैक ओएस एक्स के लिए है। लिनक्स here के लिए एक संस्करण भी है। Django dev के लिए पूरी चीज़ को सेट करने के लिए मुझे लगभग 30 सेकंड लेता है, और मेरे परीक्षण कभी-कभी डिफ़ॉल्ट परीक्षण डेटाबेस के निर्माण सहित पांच सेकंड के भीतर चलते हैं। ;)

0

जैसा कि इस धागे में पोस्ट किया गया है: How do I run a unit test against the production database?, मैं एक परीक्षण सूट बनाता हूं जो उत्पादन डीबी (मेरे स्थानीय देव मशीन पर, "manage.py shell" के माध्यम से) या नियमित django "प्रबंधन के विरुद्ध चला सकता है। पीई परीक्षण "परीक्षण सूट। यह त्वरित स्वच्छता जांच करने और विकास के दौरान समय सत्यापन के लिए मेरे लिए एक वास्तविक समय बचाने वाला रहा है। किसी भी मामले में मैं एक ही डीबी (MySQL) के खिलाफ दौड़ रहा हूं और अपने परीक्षणों में django ORM प्राप्त कर रहा हूं।

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