6
是有什麼辦法文檔測試本地定義的功能呢?作爲一個例子,我想文檔測試本地定義功能
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
不通過測試。但我仍不想讓foo2的全球對整個模塊...
是有什麼辦法文檔測試本地定義的功能呢?作爲一個例子,我想文檔測試本地定義功能
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
不通過測試。但我仍不想讓foo2的全球對整個模塊...
你只是有一個空格的問題 - 如果你解決這個問題,舉例如下:
def foo():
"""
>>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
if __name__ == '__main__':
import doctest
doctest.testmod()
測試只是傳遞精細。
感謝。我已經擔心在文檔字符串之外沒有辦法解決代碼。我仍然認爲可能有一個技巧來導入函數的局部,從而獲得嵌套函數的訪問權限。總之,採用亞歷克斯」的方法解決方案將讀取
def foo(debug=False):
"""
>>> foo()
testfoo
>>> foo(debug=True)
"""
def foo2():
"""
>>> 1/0"""
print 'testfoo'
if debug :
import doctest
for f in [foo2]: doctest.run_docstring_examples(f,locals())
foo2()
現在唯一的問題是如何自動這種方法,所以一個個有類似
for f in locals().values(): doctest.run_docstring_examples(f,locals())
,但沒有進口,內置函數和變量。
這是一個拼寫錯誤和混淆我的意圖:我想測試__NOT__通過。我想要得到的東西,如「ZeroDivisionError:整數除零或模」由於foo2的的文檔測試字符串。問題是如何測試子例程。 – 2010-03-10 17:29:24
啊,我明白了。嵌套的**函數的文檔字符串在(嵌套的)函數對象本身不存在時不可見 - 並且在代碼中,foo2的函數對象僅在執行外部函數foo的過程中存在。 (在正常的閉包工廠中,外層函數返回內層函數對象,而不是在內部使用它作爲實現細節,當然有更多的選項)。基本上,它必須是foo的工作,以某種方式來表達foo2的其他隱藏文檔字符串,因爲沒有其他人可以做到這一點(foo2不存在**爲其他人!)。 – 2010-03-10 18:25:36