[TIP] Testing multiple calls of the same method
Jean-Yves LEBLEU
jlebleu at gmail.com
Tue Jun 21 01:56:58 PDT 2011
Hi all,
First thanks for the mock library, coming from the java world were I
used to test everything I find it very usefull and very easy to use.
I came across the pb to test a method calling many times the same
method of another object and I did not find any very good solution to
this problem, except poping out the last call and checking the call in
reverse order as in
http://www.voidspace.org.uk/python/mock/examples.html#checking-multiple-calls-with-mock
An other solution is to check if the call was made with arguments
without any assertion of the order of the call, so I have implemented
another assert_called_with checking the call was done once with the
correct arguments.
def assert_was_called_with(self, *args, **kwargs):
'''
assert that the mock was called with the specified arguments.
Raises an AssertionError if the args and keyword args passed in are
different to the last call to the mock.
'''
if self.call_args is None:
raise AssertionError('Expected: %s\nNot called' % ((args, kwargs),))
for xargs in self.call_args_list:
print xargs
if xargs == (args, kwargs):
return
raise AssertionError(
'Expected: %s\nCalled with: %s' % ((args, kwargs), self.call_args)
)
Hope this will help.
Jean-Yves
More information about the testing-in-python
mailing list