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

时间:2012-11-28 13:28:08

标签: python unit-testing nested-function

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

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

或者需要测试的函数是否应该嵌套?

3 个答案:

答案 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