如何在以下示例中对嵌套函数f1()进行单元测试?
def f():
def f1():
return 1
return 2
或者需要测试的函数是否应该嵌套?
答案 0 :(得分:7)
你没有,因为你做不到。
您必须将单元测试限制为外部函数,或者将内部函数移动到其他位置。
答案 1 :(得分:5)
this link中有类似的问题。但简短的回答是:你无法从外部元素访问内部函数。
出于测试目的,可能另一种方法是更改私有外部函数的内部函数吗?
答案 2 :(得分:1)
我有同样的疑问,并找到了一种方法来测试内部函数。
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