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)。