हर बार एक समय में मैं खुद को परीक्षण प्लेसमेंट के विषय की जांच कर पाता हूं, और हर बार बहुमत पुस्तकालय कोड के बगल में एक अलग फ़ोल्डर संरचना की सिफारिश करता है, लेकिन मुझे लगता है कि हर बार तर्क समान हैं और यह आश्वस्त नहीं हैं। मैं अपने परीक्षण मॉड्यूल को मुख्य मॉड्यूल के साथ कहीं और डाल देता हूं।
ऐसा करने का मुख्य कारण है: रिफैक्टरिंग ।
जब मैं चीजों को इधर-उधर करता हूं तो मैं चाहता हूं कि टेस्ट मॉड्यूल कोड के साथ आगे बढ़ें; यदि वे एक अलग पेड़ में हैं तो परीक्षण खोना आसान है। चलो ईमानदार हो, जितनी जल्दी या बाद में आप पूरी तरह से अलग फ़ोल्डर संरचना के साथ समाप्त हो जाते हैं, जैसे कि django , फ्लास्क और कई अन्य। जो ठीक है अगर आप परवाह नहीं करते हैं।
मुख्य प्रश्न जो आपको स्वयं से पूछना चाहिए वह यह है:
क्या मैं लिख रहा हूँ:
- a) पुन: प्रयोज्य पुस्तकालय या
- ख) कुछ अर्ध-पृथक मॉड्यूलों को एक साथ बंडल करने की तुलना में एक परियोजना का निर्माण?
यदि एक:
एक अलग फ़ोल्डर और इसकी संरचना को बनाए रखने के लिए अतिरिक्त प्रयास बेहतर अनुकूल हो सकता है। किसी को भी आपके परीक्षणों के उत्पादन में तैनात होने की शिकायत नहीं होगी ।
लेकिन यह भी परीक्षण के रूप में वितरित करने से आसान है जब उन्हें मूल फ़ोल्डरों के साथ मिलाया जाता है; इसे सेटअप में डालें :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
यदि बी:
आप चाहते हैं - जैसा कि हम में से हर कोई करता है - कि आप पुन: प्रयोज्य पुस्तकालय लिख रहे हैं, लेकिन अधिकांश समय उनका जीवन परियोजना के जीवन से जुड़ा होता है। अपनी परियोजना को आसानी से बनाए रखने की क्षमता प्राथमिकता होनी चाहिए।
फिर यदि आपने एक अच्छा काम किया और आपका मॉड्यूल किसी अन्य परियोजना के लिए एक अच्छा फिट है, तो यह संभवतः नकल हो जाएगा - एक नई लाइब्रेरी में कांटा या बना नहीं - इस नए प्रोजेक्ट में, और एक ही फ़ोल्डर संरचना में इसके बगल में ले जाने वाले परीक्षण एक गड़बड़ परीक्षण में मछली पकड़ने की तुलना में आसान है जो एक अलग परीक्षण फ़ोल्डर बन गया था। (आप तर्क दे सकते हैं कि यह पहली जगह में गड़बड़ नहीं होनी चाहिए लेकिन यहां यथार्थवादी होना चाहिए)।
तो विकल्प अभी भी तुम्हारा है, लेकिन मैं तर्क दूंगा कि मिश्रित परीक्षणों के साथ आप एक अलग फ़ोल्डर के साथ सभी समान चीजें प्राप्त करते हैं, लेकिन चीजों को सुव्यवस्थित रखने पर कम प्रयास के साथ।