我可以在Python中单元测试内部函数吗?

8 投票
2 回答
2075 浏览
提问于 2025-04-15 18:28

有没有什么办法可以为 innerfuncunittestsdoctests 呢?

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

2 个回答

4

其实这是一个很久以前就存在的Python问题:

这里有一个候选的修复方案(是2007年的),可以让doctest找到嵌套函数,但可能还需要有人来推动这个修复。

8

只有当你提供一种方法来提取内部函数对象本身时,才能做到这一点,比如:

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

如果你的外部函数坚持将内部函数完全隐藏在内部(即使在适当的情况下也不让它出来),那么你的单元测试就无能为力,无法打破这种极端和完全的隐私保护了;-)

撰写回答