我能否在Python中对内部函数进行单元测试?

8

有没有办法为 innerfunc 编写 unittestsdoctests?

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

1
通常情况下,您不会这样做:API 是封闭函数,而内部函数类似于函数中的命名代码块。您不会直接测试它们,就像您不会直接测试函数内部的单个循环一样;您测试调用执行代码块的函数的输入。 - Glenn Maynard
2个回答

8

只有在提供一种提取内部函数对象本身的方法时才能实现,例如:

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

如果你的外部函数坚持完全将内部函数隐藏在自身内部(当适当地劝说它这样做时,从不让它渗透到外部),那么你的单元测试就无法打败这种强烈的、极端的和完全私密的请求;-)。

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接