我可以在Python中单元测试内部函数吗?
有没有什么办法可以为 innerfunc
写 unittests
或 doctests
呢?
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
如果你的外部函数坚持将内部函数完全隐藏在内部(即使在适当的情况下也不让它出来),那么你的单元测试就无能为力,无法打破这种极端和完全的隐私保护了;-)