diff options
author | Kumar Akshay <k.akshay9721@gmail.com> | 2019-03-22 13:40:40 +0530 |
---|---|---|
committer | Chris Withers <chris@withers.org> | 2019-04-30 08:39:55 +0100 |
commit | 19b90359e941a86423f852e50731edea9a086974 (patch) | |
tree | abe54a416cd46d3263ebe93f3844dd6808ac5c89 /mock | |
parent | b5903d4fee18336a96b6756f71fa942fd35209a7 (diff) | |
download | mock-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.py | 16 | ||||
-rw-r--r-- | mock/tests/testhelpers.py | 9 | ||||
-rw-r--r-- | mock/tests/testmock.py | 11 |
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): |