有沒有什麼辦法可以爲innerfunc
寫unittests
或doctests
?我可以在python中測試一個內部函數嗎?
def outerfunc():
def innerfunc():
do_something()
return innerfunc()
有沒有什麼辦法可以爲innerfunc
寫unittests
或doctests
?我可以在python中測試一個內部函數嗎?
def outerfunc():
def innerfunc():
do_something()
return innerfunc()
只有當你提供一種方法來提取內部函數對象本身,例如,
def outerfunc(calltheinner=True):
def innerfunc():
do_something()
if calltheinner:
return innerfunc()
else:
return innerfunc
如果外部函數堅持完全隱藏內一個內部本身(從不讓它滲透外面當正確哄騙這樣做),你的單元測試是無能爲力擊敗極端和總隱私這種強烈的競價;-)。
那是我的懷疑,謝謝。 – Gattster 2010-01-26 01:11:28
這其實是一個老開放的Python問題:
有一個候選人補丁(2007年),使文檔測試發現嵌套函數,但有人可能需要按這個。
您通常不會這樣做:API是封閉函數,內部函數類似於函數中的指定代碼塊。你不直接測試它們,就像你不直接在函數內部測試單個循環一樣;您測試輸入到執行代碼塊的函數的輸入。 – 2010-01-26 08:27:53