जिस परियोजना पर मैं काम कर रहा हूं वह एक पाइथन पैकेज के रूप में लिपटे एक व्यावसायिक तर्क सॉफ्टवेयर है। विचार यह है कि विभिन्न स्क्रिप्ट या एप्लिकेशन इसे आयात करेगा, इसे आरंभ करें, फिर इसका उपयोग करें।एक राज्यव्यापी पायथन मॉड्यूल के साथ परीक्षण अलगाव को सही ढंग से कैसे प्राप्त करें?
वर्तमान में इसमें शीर्ष स्तर की init() विधि है जो प्रारंभिकता और विभिन्न चीजों को सेट करती है, एक अच्छा उदाहरण यह है कि यह SQLAlchemy को डीबी कनेक्शन के साथ सेट करता है और बाद में एक्सेस के लिए एसए सत्र स्टोर करता है। यह मेरे प्रोजेक्ट के उप-पैकेज में संग्रहीत किया जा रहा है (अर्थात् myproj.model.Session, इसलिए मॉडल को आयात करने के बाद अन्य कोड एक एसए सत्र प्राप्त कर सकता है)।
लंबी कहानी छोटी, यह मेरे पैकेज को एक स्टेटफुल बनाता है। मैं इस परियोजना के लिए इकाई परीक्षण लिख रहा हूँ और इस stafeful व्यवहार कुछ समस्या बन गया है:
- परीक्षण अलग करना चाहिए, लेकिन मेरे पैकेज की आंतरिक स्थिति यह अलगाव टूट जाता है
- मैं मुख्य init परीक्षण नहीं कर सकते() विधि के बाद से अपने व्यवहार राज्य पर निर्भर करता है
- भविष्य परीक्षण मैं के खिलाफ चलाने के लिए (अभी तक नहीं लिखा) एक प्रसिद्ध मॉडल राज्य के साथ नियंत्रक हिस्सा आवश्यकता होगी (जैसे। एक पहले से भरा sqlitein-memory db)
चाहिए किसी भी तरह से मेरे packag refactor ई क्योंकि वर्तमान संरचना सर्वश्रेष्ठ (संभव) अभ्यास (टीएम) नहीं है? :)
क्या मुझे इसे उस पर छोड़ देना चाहिए और हर बार पूरी चीज को सेटअप/टियरडाउन करना चाहिए? अगर मैं पूर्ण अलगाव प्राप्त करने जा रहा हूं जिसका मतलब है कि प्रत्येक परीक्षण में पूरी तरह से मिटाना और डीबी को फिर से पॉप्युलेट करना, तो अधिक नहीं है?
यह प्रश्न वास्तव में समग्र कोड & परीक्षण संरचना पर है, लेकिन इसके लिए मेरे मूल्य के लिए मैं nose-1.0 का उपयोग कर रहा हूं। मुझे पता है कि Isolate plugin शायद मेरी मदद कर सकता है लेकिन मैं टेस्ट सूट में अजीब चीजें करने से पहले कोड प्राप्त करना चाहता हूं।