有什么方法可以对本地定义的函数进行doctest?例如,我想要

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

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

  foo2()

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

最佳答案

谢谢。我已经担心文档字符串之外的代码将无法解决。我仍然认为,导入一个函数的本地变量可能会有窍门,从而可以访问嵌套函数。无论如何,使用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())

但没有导入和内置的函数和变量。

关于python - doctest本地定义的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2403237/

10-12 21:08