मैं जावा दुनिया से आया हूं, जहां आप चर और कार्यों को छुपा सकते हैं और फिर प्रतिबिंब का उपयोग करके उनके खिलाफ यूनिट परीक्षण चला सकते हैं। मैंने अपने वर्गों के कार्यान्वयन विवरण को छिपाने के लिए नेस्टेड फ़ंक्शंस का उपयोग किया है ताकि केवल सार्वजनिक एपीआई दिखाई दे। मैं इन घोंसले कार्यों के खिलाफ यूनिट परीक्षण लिखने की कोशिश कर रहा हूं ताकि यह सुनिश्चित किया जा सके कि मैं उन्हें विकसित नहीं करता हूं। मैं की तरह नीडिंत कार्यों में से एक बुला की कोशिश की है:घोंसला वाले कार्यों पर चलने वाले यूनिट परीक्षण
def outer():
def inner():
pass
outer.inner()
जो त्रुटि संदेश में परिणाम:
AttributeError: 'function' object has no attribute 'inner'
वहाँ मेरे लिए एक तरह से इन नेस्ट कार्यों के खिलाफ इकाई परीक्षण लिखने के लिए है? यदि नहीं, तो फ़ंक्शन नामों के लिए नाम मंगिंग को ट्रिगर करने का कोई तरीका है जैसे आप वर्ग चर के लिए __ के साथ उपसर्ग करके कर सकते हैं?
कैसे इस सवाल का जवाब है? यूनिट परीक्षण के लिए ऐसे आंतरिक कार्यों को अलग करने के लिए अच्छे समाधान हैं या नहीं? यहां तक कि बाहरी फ़ंक्शन ऑब्जेक्ट से भीतरी तक पहुंच के बिना, ऐसा लगता है कि कोड को पासा करने के लिए पाइथन मॉड्यूल पार्सर, अस्थ, या टोकनेज़र के उपयोग के साथ ऐसा प्रतीत होता है। स्पष्ट रूप से कोड अप करने की तुलना में राज्य करना आसान है। :-) –
यह सवाल का जवाब देता है क्योंकि कोई * निजी * कार्यान्वयन विवरण * परीक्षण नहीं करता है। आप परीक्षण कवरेज टूल पर भरोसा कर सकते हैं ताकि आप यह बताने के लिए कि क्या आप सार्वजनिक इंटरफेस का परीक्षण निजी कार्यान्वयन का पर्याप्त अभ्यास करते हैं। – SingleNegationElimination
@ टिम: प्रश्न में अंतिम वाक्य के आधार पर, लेखक गैर-आंतरिक फ़ंक्शन के साथ ठीक है अगर इसे निजी चिह्नित किया जा सकता है। इसलिए, इस सम्मेलन को जानना उपयोगी है। – orip