unittest.mock: 如何模拟两次方法调用?
unittest.mock: how to mock two calls on method?
我如何模拟 datetime.datetime.now 在同一个方法上调用两次?
下面是我试过的:
from datetime import datetime as dt
def metodo():
return dt.today().strftime('%Y'), dt.today().strftime('%Y-%m-%d %X %z')
def test_metodo(self):
expected = ('2018', "2018-12-14 12:34:56")
mock_date = Mock(spec=mypackage.metodo)
today.side_effect=list(expected)
self.assertIsNotNone(metodo())
self.assertEqual(expected, metodo())
我成功了。
@patch('mypackage.dt')
def test_metodo(self, mock_date):
expected = ('2018', "2018-12-14 12:34:56")
mock_date.today.return_value = mypackage.dt(2018, 12, 14, 12, 34, 56)
mock_date.today.return_value.strftime.side_effect = list(expected)
self.assertIsNotNone(metodo())
self.assertEqual(expected, metodo())
我如何模拟 datetime.datetime.now 在同一个方法上调用两次?
下面是我试过的:
from datetime import datetime as dt
def metodo():
return dt.today().strftime('%Y'), dt.today().strftime('%Y-%m-%d %X %z')
def test_metodo(self):
expected = ('2018', "2018-12-14 12:34:56")
mock_date = Mock(spec=mypackage.metodo)
today.side_effect=list(expected)
self.assertIsNotNone(metodo())
self.assertEqual(expected, metodo())
我成功了。
@patch('mypackage.dt')
def test_metodo(self, mock_date):
expected = ('2018', "2018-12-14 12:34:56")
mock_date.today.return_value = mypackage.dt(2018, 12, 14, 12, 34, 56)
mock_date.today.return_value.strftime.side_effect = list(expected)
self.assertIsNotNone(metodo())
self.assertEqual(expected, metodo())