有没有办法doctest本地定义的函数?作为一个例子,我想要
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
不通过测试。但我仍然不想让整个模块的foo2全局......
答案 0 :(得分:3)
感谢。我已经担心在文档字符串之外的代码没有办法了。我仍然认为可能有一个技巧来导入函数的本地,从而可以访问嵌套函数。无论如何,使用Alex的方法的解决方案将阅读
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())
但没有导入和内置的函数和变量。
答案 1 :(得分:1)
你只有一个空白问题 - 如果你修复它,例如如下:
def foo():
"""
>>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
if __name__ == '__main__':
import doctest
doctest.testmod()
测试通过就好了。