2017-05-11 23 views
0

我正在寻找断言的一系列调用,而不关心什么参数给出。有什么办法可以完成以下任务?如何断言一系列成员调用而不关心unittest.mock的参数?

self.mocker = Mock() 
self.mocker.increment = Mock() 
self.mocker.decrement = Mock() 

self.mocker.increment(2) 
self.mocker.decrement(4) 

expected_calls = [call.increment(ANY_ARGS), call.decrement(ANY_ARGS)] 

self.mocker.assert_has_calls(expected_calls, any_order=False) 
+0

你并不需要分配更多morks为'increment'和'decrement';那些也会自动模拟。 –

回答

0

你会想看看mock_calls list并提取名字记录每次通话。然后,您可以断言,正确的方法名称叫,为了:

self.assertEqual([c[0] for c in self.mocker.mock_calls], ['increment', 'decrement']) 

快速演示:

>>> from unittest import mock 
>>> mocker = mock.Mock() 
>>> mocker.increment(2) 
<Mock name='mock.increment()' id='4546399144'> 
>>> mocker.decrement(4) 
<Mock name='mock.decrement()' id='4546398752'> 
>>> mocker.mock_calls 
[call.increment(2), call.decrement(4)] 
>>> mocker.mock_calls[0][0] 
'increment' 
>>> [c[0] for c in mocker.mock_calls] 
['increment', 'decrement'] 
相关问题