2012-11-28 93 views

回答

3

this link中有类似问题。但简短的回答:你不能从外部元素访问内部函数。

出于测试目的,也许另一种办法是更改私人外部函数的内部函数?

5

你不这样做,因为你不能。

您必须将单元测试限制为外部函数,或者将内部函数移到其他地方。

1

我有同样的疑问,并找到一种方法来获取内部函数的测试。

def outer(): 
    def inner(): 
     pass 

    if __debug__: 
     test_inner(inner) 
     # return 

def test_inner(f): 
    f() # this calls the inner function 

outer() 

基本上,您可以将内部函数作为参数发送到外部并根据需要进行测试。当调用outer()时,你的测试将运行,并且由于它是一个闭包,它将保留外部函数的任何额外属性(如变量)。使用列表,您可以发送尽可能多的功能。要忽略如果,一个选项是运行这样的代码:

python -O code.py 
+0

这是一个非常特殊的案例解决方案。考虑循环内的嵌套函数,访问外部函数的局部变量(嵌套函数的更常见用例,恕我直言)。 – Alfe