Python 如何对嵌套函数进行单元测试?

Python 如何对嵌套函数进行单元测试?,python,unit-testing,nested-function,Python,Unit Testing,Nested Function,在下面的示例中,如何对嵌套函数f1()进行单元测试 def f(): def f1(): return 1 return 2 或者需要测试的函数不应该嵌套吗?您不需要,因为您不能 您必须将单元测试限制在外部函数,或者将内部函数移到其他地方。中也有类似的问题。但简短的回答是:您不能从外部元素访问内部函数 出于测试的目的,可能有一种替代方法是将内部函数更改为私有的外部函数?我也有同样的疑问,并找到了一种方法来让内部函数进行测试 def outer(): def

在下面的示例中,如何对嵌套函数
f1()
进行单元测试

def f():
    def f1():
       return 1
    return 2

或者需要测试的函数不应该嵌套吗?

您不需要,因为您不能


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

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


出于测试的目的,可能有一种替代方法是将内部函数更改为私有的外部函数?

我也有同样的疑问,并找到了一种方法来让内部函数进行测试

def outer():
    def inner():
        pass

    if __debug__:
        test_inner(inner)
        # return

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

outer()
基本上,您可以将内部函数作为参数发送到外部,并根据需要对其进行测试。调用outer()时,您的测试将运行,因为它是一个闭包,所以它将保留来自外部函数的任何额外属性(如变量)。使用列表,您可以发送任意数量的函数。要忽略if,可以选择如下方式运行代码:

python -O code.py

@阿莱曼吉:谢谢!这回答了我的问题。我将把它作为一个答案:)这是一个非常特殊的案例解决方案。考虑循环内的嵌套函数,访问外部函数的局部变量(嵌套函数更常见的用例,IMHO)。