【问题标题】:Python Mocking of Boolean Function布尔函数的 Python 模拟
【发布时间】:2015-09-05 19:24:02
【问题描述】:

所以我刚刚开始使用模拟库来执行一些单元测试。但是遇到了一个对我来说肯定很神秘的问题。

当我调用下面的代码时,stream.open() 总是评估为 True,因为它似乎返回的是 Mock 对象而不是 False 值。

测试代码

@patch('module.lib.stream')
def test_error_raised(self, mock_stream):
    mock_stream.open.return_value = False
    self.assertRaises(IOError, get_query, 618)

调用函数

def get_query(id):
    id = str(id)
    fpath = os.path.join(
        path, '{0}.pdf'.format(id))
    stream = stream()
    if not stream.open(fpath):
        raise IOError("No file found")
    list = map(foo, stream.GetData())
    first_entry = list[0]
    target_entries = list[1:]
    return first_entry, target_entries

有没有办法正确地模拟这个函数?

【问题讨论】:

    标签: python django python-2.7 unit-testing mocking


    【解决方案1】:

    从你这里的函数来看,stream 似乎是一个类。

    由于您创建了该类的实例,然后对该实例调用了open 方法,因此您需要在测试函数中执行mock_stream.return_value.open.return_value = False

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2019-01-19
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 2011-12-22
      • 2013-05-06
      相关资源
      最近更新 更多