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

标签 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 吗?

最佳答案

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

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

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

关于python - 模拟另一个函数内部的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49173269/

相关文章:

python - 使用 node-python 从托管在 python 下的 Web 应用程序执行 python 脚本?

jquery - 请推荐一个库来在浏览器中模拟 ajax 请求

PHPUnit Mock 稍后改变期望

c# - 最小起订量并抛出 SqlException

Python 正则表达式 : get everything except for string

python - Pandas 从 dataframe.loc 获取索引列表

c# - 如何模拟新创建的对象?

python - 编写 'anonymous' 子类进行单元测试?

python - 在不创建序列文件的情况下运行 BLAST (bl2seq)

unit-testing - 如何使用 AutoFixture 创建对象但不填写任何属性