模拟另一个函数内部的函数

时间:2018-03-08 12:36:51

标签: python unit-testing mocking

我需要测试一个函数,如下所示:

def f1(var):
    def f2(var):
        # some ops based on var
        # return the result

    ret = f2(var)
    # ops

在我的单元测试中,我想模拟f2的返回值,它位于f1内。

我试图用

模仿它
f1.f2.return_value

f2.return_value

但都失败了。

那我怎么能在f1里面模仿f2,

或者我应该重构代码以将f2移出f1?

1 个答案:

答案 0 :(得分:1)

虽然几乎可以肯定某种方式来访问f1内部的f2并在单元测试中为它创建一个存根,但重构和将f2移出f1几乎肯定会更清晰。像这样:

def f1(var):
    ret = f2(var)

def f2(var):
   # some ops based on var
   return result