2010-01-26 89 views
8

有沒有什麼辦法可以爲innerfuncunittestsdoctests我可以在python中測試一個內部函數嗎?

def outerfunc(): 
    def innerfunc(): 
     do_something() 
    return innerfunc() 
+1

您通常不會這樣做:API是封閉函數,內部函數類似於函數中的指定代碼塊。你不直接測試它們,就像你不直接在函數內部測試單個循環一樣;您測試輸入到執行代碼塊的函數的輸入。 – 2010-01-26 08:27:53

回答

7

只有當你提供一種方法來提取內部函數對象本身,例如,

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

如果外部函數堅持完全隱藏內一個內部本身(從不讓它滲透外面當正確哄騙這樣做),你的單元測試是無能爲力擊敗極端和總隱私這種強烈的競價;-)。

+1

那是我的懷疑,謝謝。 – Gattster 2010-01-26 01:11:28

相關問題