python mock_open断言几个写调用

python mock_open断言几个写调用,python,unit-testing,python-2.7,mocking,Python,Unit Testing,Python 2.7,Mocking,我试图测试一些做日志记录的代码 logfile = open(file_name, 'w') logfile.write("blah1") logfile.write("blah2") 我想断言blah1和blah2都是被编写的。我的测试函数如下所示: def test_it(self): logger.open = mock_open() logger.time.time = Mock(return_value=12345) logger.run_me()

我试图测试一些做日志记录的代码

logfile = open(file_name, 'w')
logfile.write("blah1")
logfile.write("blah2")
我想断言blah1和blah2都是被编写的。我的测试函数如下所示:

def test_it(self):
    logger.open = mock_open()
    logger.time.time = Mock(return_value=12345)

    logger.run_me()

    logger.open.assert_called_once_with('test_12345.log', 'w');
    file_handle_mock = logger.open()
    file_handle_mock.write.assert_called_with("blah1")
    file_handle_mock.write.assert_called_with("blah2")
但这给了我一个错误:

AssertionError: Expected call: write('blah1')
Actual call: write('blah2')
如何正确测试对write函数的多个调用

版本: Python 2.7.6
mock==1.0.1

根据文档,
assert\u调用
assert\u调用一次
仅当调用是最近的调用1时才通过。使用
assert\u任何调用
,或
assert\u有调用
的技巧

file_handle_mock.write.assert_has_calls([
    mock.call('blah1'),
    mock.call('blah2'),
])

1它有点隐藏在文档中,因此我们不能真的责怪您错过了它…

没问题。很乐意帮忙。