python mock_open 断言多个写调用
python mock_open assert several write calls
我正在尝试测试一些执行日志记录的代码。
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')
如何正确测试对写入函数的多次调用?
版本:
Python 2.7.6
模拟==1.0.1
根据文档,assert_called_with
和 assert_called_once_with
只有在调用是最近的调用时才会通过 1。我们使用 assert_any_call
或 assert_has_calls
.
的技巧
file_handle_mock.write.assert_has_calls([
mock.call('blah1'),
mock.call('blah2'),
])
1它有点隐藏在 assert_any_call 的文档中,所以我们不能真正责怪你错过它...
我正在尝试测试一些执行日志记录的代码。
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')
如何正确测试对写入函数的多次调用?
版本: Python 2.7.6 模拟==1.0.1
根据文档,assert_called_with
和 assert_called_once_with
只有在调用是最近的调用时才会通过 1。我们使用 assert_any_call
或 assert_has_calls
.
file_handle_mock.write.assert_has_calls([
mock.call('blah1'),
mock.call('blah2'),
])
1它有点隐藏在 assert_any_call 的文档中,所以我们不能真正责怪你错过它...