python3:doctest 帮助程序/内部函数?

Tom*_*mmy 3 python doctest python-3.x

如何进行以下工作以便运行助手的测试?它没有。

def B():
    def helper():
        """
        >>> some doctest
        result
        """

...
if __name__ == "__main__":
    import doctest
    doctest.testmod() 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

找不到嵌套函数,因为在函数运行之前函数对象不存在B()。您必须将其作为调用函数的结果返回B(),然后将其分配给__test__字典:

def B()
    def helper()
        """
        >>> some doctest
        result
        """

    return helper    

# ...

if __name__ == "__main__":
    import doctest
    __test__ = {'helper': B()}
    doctest.testmod() 
Run Code Online (Sandbox Code Playgroud)

doctest.testmod()查找__test__全局字典并查找值中任何类、方法、函数和模块的文档字符串;任何字符串值都直接作为文档字符串测试执行。

如果B()其他的事情之外,那么你或许应该做helper()一个简单的全局函数:

def B():
    # uses helper

def helper()
    """
    >>> some doctest
    result
    """

# ...

if __name__ == "__main__":
    import doctest
    doctest.testmod() 
Run Code Online (Sandbox Code Playgroud)