布尔函数的Python模拟

布尔函数的Python模拟,python,django,python-2.7,unit-testing,mocking,Python,Django,Python 2.7,Unit Testing,Mocking,因此,我刚刚开始使用mock库来执行一些单元测试。但是遇到了一个对我来说很神秘的问题 当我调用下面的代码流时,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

因此,我刚刚开始使用mock库来执行一些单元测试。但是遇到了一个对我来说很神秘的问题

当我调用下面的代码流时,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

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

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

由于创建了该类的实例,然后对该实例调用
open
方法,因此需要在测试函数中执行
mock\u stream.return\u value.open.return\u value=False