Open GoogleCodeExporter opened 8 years ago
A potential implementation:
class WaitingMock(mock.Mock):
def __init__(self, *args, **kwargs):
super(WaitingMock, self).__init__(*args, **kwargs)
self._wait_call_count_event = threading.Event()
self._num_calls_waiting_for = None
def _mock_call(self, *args, **kwargs):
retval = super(WaitingMock, self)._mock_call(*args, **kwargs)
waiting_for = self._num_calls_waiting_for
if waiting_for and self.call_count >= waiting_for:
self._wait_call_count_event.set()
return retval
def assert_wait_call_count(self, count, timeout=1.):
"""
Wait for mock to be called at least 'count' times within 'timeout' seconds
Raises AssertionError if the call count is not reached.
"""
self._num_calls_waiting_for = count
self._wait_call_count_event.clear()
if self.call_count >= count:
return True
self._wait_call_count_event.wait(timeout=timeout)
assert(self._wait_call_count_event.isSet())
Original comment by nmar...@gmail.com
on 15 Nov 2012 at 1:39
There is a similar feature request on the python issue tracker:
http://bugs.python.org/issue17013
Original comment by fuzzyman
on 5 Feb 2013 at 12:14
Original issue reported on code.google.com by
nmar...@gmail.com
on 15 Nov 2012 at 12:29