doctest本地定义的函数

时间:2010-03-08 17:25:23

标签: python doctest

有没有办法doctest本地定义的函数?作为一个例子,我想要

def foo():
  """ >>> foo()
  testfoo"""

  def foo2():
    """ >>> 1/0 """ 
    print 'testfoo'

  foo2()

不通过测试。但我仍然不想让整个模块的foo2全局......

2 个答案:

答案 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()

测试通过就好了。