【问题标题】:Mocking a function inside a function in Python Unit Testing using Mock使用 Mock 在 Python 单元测试中模拟函数内部的函数
【发布时间】:2013-12-06 08:28:55
【问题描述】:

我正在使用 Mock 进行 Python 单元测试。我正在测试一个函数foo,它包含一个不返回任何内容的函数bar,但会填充一个变量x(类型:io.StringIO)作为副作用。我已经使用 MagicMock 模拟了 bar,但我不知道如何从测试脚本中分配给 x

我有以下情况:

def foo():
    x = io.StringIO()
    bar(x)                 # x is filled with some string by bar method
    here some operation on x

要为foo 编写单元测试用例,我使用 MagicMock 模拟了bar(返回值=None),但如何分配给x,这是foo 需要的。

【问题讨论】:

  • 你能更清楚你想要什么吗?
  • 变量是传递给嵌套函数,还是仅仅依赖闭包?

标签: python unit-testing mocking


【解决方案1】:

你需要模拟io.StringIO,然后你可以用其他东西替换它:

@mock.patch('mymodule.io.StringIO')
def test_foo(self, mock_stringio):
    mock_stringio.return_value = mock.Mock()

注意return_value 的使用,这意味着您正在模拟从StringIO() 调用返回的实例。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2021-09-10
    • 1970-01-01
    • 2010-11-17
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多