summaryrefslogtreecommitdiff
path: root/mock
diff options
context:
space:
mode:
authorKumar Akshay <k.akshay9721@gmail.com>2019-03-22 13:40:40 +0530
committerChris Withers <chris@withers.org>2019-04-30 08:39:55 +0100
commit19b90359e941a86423f852e50731edea9a086974 (patch)
treeabe54a416cd46d3263ebe93f3844dd6808ac5c89 /mock
parentb5903d4fee18336a96b6756f71fa942fd35209a7 (diff)
downloadmock-19b90359e941a86423f852e50731edea9a086974.tar.gz
bpo-21269: Provide args and kwargs attributes on mock call objects GH11807
Backports: b0df45e55dc8304bac0e3cad0225472b84190964 Signed-off-by: Chris Withers <chris@withers.org>
Diffstat (limited to 'mock')
-rw-r--r--mock/mock.py16
-rw-r--r--mock/tests/testhelpers.py9
-rw-r--r--mock/tests/testmock.py11
3 files changed, 33 insertions, 3 deletions
diff --git a/mock/mock.py b/mock/mock.py
index ec1fece..2d52990 100644
--- a/mock/mock.py
+++ b/mock/mock.py
@@ -2295,6 +2295,22 @@ class _Call(tuple):
def index(self, *args, **kwargs):
return self.__getattr__('index')(*args, **kwargs)
+ def _get_call_arguments(self):
+ if len(self) == 2:
+ args, kwargs = self
+ else:
+ name, args, kwargs = self
+
+ return args, kwargs
+
+ @property
+ def args(self):
+ return self._get_call_arguments()[0]
+
+ @property
+ def kwargs(self):
+ return self._get_call_arguments()[1]
+
def __repr__(self):
if not self._mock_from_kall:
name = self._mock_name or 'call'
diff --git a/mock/tests/testhelpers.py b/mock/tests/testhelpers.py
index 34a8eae..8ff276e 100644
--- a/mock/tests/testhelpers.py
+++ b/mock/tests/testhelpers.py
@@ -158,6 +158,8 @@ class CallTest(unittest.TestCase):
self.assertEqual(args, ('foo', (1, 2, 3)))
self.assertEqual(args, ('foo', (1, 2, 3), {}))
self.assertEqual(args, ((1, 2, 3), {}))
+ self.assertEqual(args.args, (1, 2, 3))
+ self.assertEqual(args.kwargs, {})
def test_named_call_with_args(self):
@@ -165,6 +167,8 @@ class CallTest(unittest.TestCase):
self.assertEqual(args, ('foo', (1, 2, 3)))
self.assertEqual(args, ('foo', (1, 2, 3), {}))
+ self.assertEqual(args.args, (1, 2, 3))
+ self.assertEqual(args.kwargs, {})
self.assertNotEqual(args, ((1, 2, 3),))
self.assertNotEqual(args, ((1, 2, 3), {}))
@@ -177,6 +181,8 @@ class CallTest(unittest.TestCase):
self.assertEqual(args, ('foo', dict(a=3, b=4)))
self.assertEqual(args, ('foo', (), dict(a=3, b=4)))
self.assertEqual(args, ((), dict(a=3, b=4)))
+ self.assertEqual(args.args, ())
+ self.assertEqual(args.kwargs, dict(a=3, b=4))
def test_named_call_with_kwargs(self):
@@ -184,6 +190,8 @@ class CallTest(unittest.TestCase):
self.assertEqual(args, ('foo', dict(a=3, b=4)))
self.assertEqual(args, ('foo', (), dict(a=3, b=4)))
+ self.assertEqual(args.args, ())
+ self.assertEqual(args.kwargs, dict(a=3, b=4))
self.assertNotEqual(args, (dict(a=3, b=4),))
self.assertNotEqual(args, ((), dict(a=3, b=4)))
@@ -191,6 +199,7 @@ class CallTest(unittest.TestCase):
def test_call_with_args_call_empty_name(self):
args = _Call(((1, 2, 3), {}))
+
self.assertEqual(args, call(1, 2, 3))
self.assertEqual(call(1, 2, 3), args)
self.assertIn(call(1, 2, 3), [args])
diff --git a/mock/tests/testmock.py b/mock/tests/testmock.py
index 2832ebf..ca87e71 100644
--- a/mock/tests/testmock.py
+++ b/mock/tests/testmock.py
@@ -290,6 +290,10 @@ class MockTest(unittest.TestCase):
self.assertEqual(mock.call_count, 1, "call_count incoreect")
self.assertEqual(mock.call_args, ((sentinel.Arg,), {}),
"call_args not set")
+ self.assertEqual(mock.call_args.args, (sentinel.Arg,),
+ "call_args not set")
+ self.assertEqual(mock.call_args.kwargs, {},
+ "call_args not set")
self.assertEqual(mock.call_args_list, [((sentinel.Arg,), {})],
"call_args_list not initialised correctly")
@@ -323,6 +327,8 @@ class MockTest(unittest.TestCase):
])
self.assertEqual(mock.call_args,
((sentinel.Arg,), {"kw": sentinel.Kwarg}))
+ self.assertEqual(mock.call_args.args, (sentinel.Arg,))
+ self.assertEqual(mock.call_args.kwargs, {"kw": sentinel.Kwarg})
# Comparing call_args to a long sequence should not raise
# an exception. See issue 24857.
@@ -1218,9 +1224,8 @@ class MockTest(unittest.TestCase):
mock(2, b=4)
self.assertEqual(len(mock.call_args), 2)
- args, kwargs = mock.call_args
- self.assertEqual(args, (2,))
- self.assertEqual(kwargs, dict(b=4))
+ self.assertEqual(mock.call_args.args, (2,))
+ self.assertEqual(mock.call_args.kwargs, dict(b=4))
expected_list = [((1,), dict(a=3)), ((2,), dict(b=4))]
for expected, call_args in zip(expected_list, mock.call_args_list):