我可以用python对内部函数进行单元测试吗?

我可以用python对内部函数进行单元测试吗?,python,unit-testing,doctest,Python,Unit Testing,Doctest,有没有办法为innerfunc编写unittests或doctests def outerfunc(): def innerfunc(): do_something() return innerfunc() 仅当您提供提取内部函数对象本身的方法时,例如 def outerfunc(calltheinner=True): def innerfunc(): do_something() if calltheinner:

有没有办法为
innerfunc
编写
unittests
doctests

def outerfunc():
    def innerfunc():
        do_something()
    return innerfunc()

仅当您提供提取内部函数对象本身的方法时,例如

def outerfunc(calltheinner=True):
    def innerfunc():
        do_something()
    if calltheinner:
        return innerfunc()
    else:
        return innerfunc

如果您的外部函数坚持将内部函数完全隐藏在自身内部(在适当的劝诱下,永远不要让它渗透到外部),那么您的单元测试将无法击败这种对极端和完全隐私的强烈诉求;-)

这实际上是一个老的开放式Python问题:


有一个候选补丁(从2007年开始)可以让doctest查找嵌套函数,但可能需要有人推动它。

通常不会这样做:API是封闭函数,内部函数类似于函数中的命名代码块。您不直接测试它们,就像您不直接测试函数中的单个循环一样;测试执行代码块的函数的输入。