20

f1()在以下示例中,您将如何对嵌套函数进行单元测试?

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

还是不应该嵌套需要测试的函数?

4

3 回答 3

12

此链接中有一个类似的问题。但简短的回答:您不能从外部元素访问内部函数。

出于测试目的,也许另一种方法是将内部函数更改为私有外部函数?

于 2012-11-28T13:47:25.000 回答
9

你没有,因为你做不到。

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

于 2012-11-28T13:40:57.177 回答
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
于 2016-06-18T17:34:34.003 回答