هل يمكنني اختبار وظيفة وظيفة داخلية في بيثون؟

StackOverflow https://stackoverflow.com/questions/2136910

  •  22-09-2019
  •  | 
  •  

سؤال

هل هناك أي طريقة للكتابة unittests أو doctests ل innerfunc?

def outerfunc():
    def innerfunc():
        do_something()
    return innerfunc()
هل كانت مفيدة؟

المحلول

فقط إذا قدمت طريقة لاستخراج كائن الوظيفة الداخلية نفسه ، على سبيل المثال

def outerfunc(calltheinner=True):
    def innerfunc():
        do_something()
    if calltheinner:
        return innerfunc()
    else:
        return innerfunc

إذا كانت وظيفتك الخارجية تصر على إخفاء واحد داخلي بالكامل داخل نفسه (لا تدعها تتسرب من الخارج عند القيام بذلك بشكل صحيح للقيام بذلك) ، فإن اختبارات الوحدة الخاصة بك عاجزة عن هزيمة هذا العرض القوي للخصوصية الشديدة والشاملة ؛-).

نصائح أخرى

هذه في الواقع قضية بيثون مفتوحة قديمة:

هناك تصحيح مرشح (من عام 2007) يجعل Doctest Find Funds المتداخلة ، ولكن ربما يحتاج شخص ما إلى دفع هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top