मैंने Beck द्वारा वर्णित "Replace Method with Method Object" रेफैक्टरिंग का प्रदर्शन किया है।मैं विधि ऑब्जेक्ट में विधियों का परीक्षण कैसे करूं?
अब, मेरे पास "रन()" विधि और सदस्य कार्यों का एक समूह है जो गणना को छोटे इकाइयों में विघटित करता है। मैं उन सदस्य कार्यों का परीक्षण कैसे करूं?
मेरा पहला विचार यह है कि मेरा यूनिट परीक्षण मूल रूप से "रन()" विधि (विभिन्न प्रारंभिकताओं के साथ) की प्रतियां हो सकता है, लेकिन गणना के राज्य की जांच करने के लिए प्रत्येक कॉल के बीच सदस्यों के कार्यों के बीच दावे के साथ।
(मैं अजगर और unittest मॉड्यूल का उपयोग कर रहा हूँ।)
class Train:
def __init__(self, options, points):
self._options = options
self._points = points
# other initializations
def run(self):
self._setup_mappings_dict()
self._setup_train_and_estimation_sets()
if self._options.estimate_method == 'per_class':
self._setup_priors()
self._estimate_all_mappings()
self._save_mappings()
def _estimate_all_mappings():
# implementation, calls to methods in this class
#other method definitions
मैं निश्चित रूप से क्या सदस्य विशेषताओं के राज्यों से पहले और के हिस्से के रूप अलग अलग तरीकों के लिए कॉल के बाद किया जाना चाहिए के बारे में उम्मीदें हैं run()
विधि का कार्यान्वयन। क्या मुझे इन "निजी" विशेषताओं के बारे में दावा करना चाहिए? मुझे नहीं पता कि इन तरीकों को कैसे बेकार करना है।
दूसरा विकल्प यह है कि मुझे वास्तव में इनका परीक्षण नहीं करना चाहिए।
कुछ प्रश्न या छद्म कोड आपके प्रश्न को समझने में सहायक होंगे। जो आपने लिखा है, उससे ऐसा लगता है कि आप unittest.TestCase.setUp() विधि से लाभ उठा सकते हैं। http://docs.python.org/library/unittest.html#unittest.TestCase.setUp – msw
मैंने आपके प्रश्न को आपके द्वारा प्रदान किए गए कोड के साथ संपादित किया है। क्या आप इंडेंटेशन की जांच कर सकते हैं सही है, और यदि आवश्यक हो तो फिर से संपादित करें? –
@ire_and_curses। धन्यवाद, थोड़ा संपादित किया। स्वयं जवाब के लिए –