python3: doctest helper/internal 函数?

python3: doctest helper/internal functions?

如何进行以下工作才能使帮助者的测试为 运行?它没有。

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

...
if __name__ == "__main__":
    import doctest
    doctest.testmod() 

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

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

    return helper    

# ...

if __name__ == "__main__":
    import doctest
    __test__ = {'helper': B()}
    doctest.testmod() 

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

如果 B() 还做 其他 事情,那么您可能应该将 helper() 改为一个简单的全局函数:

def B():
    # uses helper

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

# ...

if __name__ == "__main__":
    import doctest
    doctest.testmod()