Python模拟布尔函数

时间:2015-06-19 17:56:12

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

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

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

有没有办法正确模拟这个功能?

1 个答案:

答案 0 :(得分:1)

从你的功能来看,private void add2ActionPerformed(java.awt.event.ActionEvent evt) { lTree2.setText(tf2.getText()); } 似乎是一个类。

由于您创建了该类的实例,然后在该实例上调用stream方法,因此您需要在测试函数中执行open