Python 模拟位于另一个函数内的函数

Python 模拟位于另一个函数内的函数,python,unit-testing,mocking,Python,Unit Testing,Mocking,我有一个功能需要测试,如下所示: def f1(var): def f2(var): # some ops based on var # return the result ret = f2(var) # ops def f1(var): ret = f2(var) def f2(var): # some ops based on var return result 在我的单元测试中,我想模拟f2的返回值,它位于

我有一个功能需要测试,如下所示:

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

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

def f2(var):
   # some ops based on var
   return result
在我的单元测试中,我想模拟f2的返回值,它位于f1内部

我试着用一句话来嘲弄它

f1.f2.return_value

但两者都失败了

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


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

虽然几乎肯定有某种方法可以访问f1内部的f2并在单元测试中为其创建存根,但重构并将f2移出f1几乎肯定会更干净。大概是这样的:

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

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

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