هل يمكنني اختبار وظيفة وظيفة داخلية في بيثون؟
-
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 المتداخلة ، ولكن ربما يحتاج شخص ما إلى دفع هذا.
لا تنتمي إلى StackOverflow