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

时间:2010-01-26 00:57:07

标签: python unit-testing doctest

有没有办法为unittests撰写doctestsinnerfunc

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

2 个答案:

答案 0 :(得分:7)

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

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

如果你的外部功能坚持将内部完全隐藏在自身内部(在适当地哄骗时不要让它渗透到外部),你的单元测试无法击败这种对极端和完全隐私的强烈要求;-)。

答案 1 :(得分:4)

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

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