मैं Python3, pytest और unittest के साथ काम कर रहा हूं। मेरे पास parent नाम का एक फ़ंक्शन है जिसमें child नाम का एक अन्य फ़ंक्शन है।

मैं आंतरिक कार्य का परीक्षण कैसे कर सकता हूं?

def parent():
    ...

    def child():
        ....

    ...
0
Xar 9 जुलाई 2020, 17:29
मुझे लगता है कि आप केवल मूल फ़ंक्शन के भीतर से फ़ंक्शन को कॉल कर सकते हैं। इसे इनकैप्सुलेशन कहा जाता है :)
 – 
mama
9 जुलाई 2020, 17:31
1
Mu, आप नहीं कर सकते। कम से कम उचित तरीके से तो नहीं।
 – 
deceze♦
9 जुलाई 2020, 17:31
3
यदि फ़ंक्शन किसी अन्य फ़ंक्शन के अंदर निहित है, तो यह मूल फ़ंक्शन का कार्यान्वयन विवरण है और इसे अलग से परीक्षण नहीं किया जाना चाहिए। आपको यह जानने के बिना कि यह किसी अन्य फ़ंक्शन को कॉल कर रहा है, पैरेंट फ़ंक्शन का परीक्षण करने में सक्षम होना चाहिए। यदि आपको आंतरिक फ़ंक्शन को अलग से कॉल करने की आवश्यकता है (और इसलिए इसका परीक्षण करें), इसे नेस्टेड नहीं किया जाना चाहिए।
 – 
Mark Meyer
9 जुलाई 2020, 17:33
आप इसे सीधे कॉल नहीं कर सकते। आप इसे केवल parent() पर कॉल करके अप्रत्यक्ष रूप से कॉल कर सकते हैं।
 – 
John Gordon
9 जुलाई 2020, 17:34

2 जवाब

आप फ़ंक्शन को केवल मूल फ़ंक्शन के भीतर से कॉल कर सकते हैं। इसे इनकैप्सुलेशन कहा जाता है :)

def parent():
    def child():
        print('World')
    print('Hello')
    child()
    print('Hello')
    child()
    print('Hello')
    child()

parent()

आउटपुट:

Hello
World
Hello
World
Hello
World
0
mama 9 जुलाई 2020, 17:32

यह इस बात पर निर्भर करता है कि आप बाल वर्ग का उपयोग कैसे कर रहे हैं लेकिन आप इसके बजाय कक्षा का उपयोग कर सकते हैं:

इसके बजाय इसे एक वर्ग बनाएं:

परीक्षण करने के लिए: कक्षाओं के अंदर अजगर इकाई परीक्षण विधियां

class Parent:
    @classmethod
    def child(cls):
        print('hello')

    @classmethod
    def run(cls, *args, **kwargs):
        cls.child()

Parent.run()
Parent.child()
-1
sam 9 जुलाई 2020, 17:45