Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: testing_support/tests/auto_stub_test.py

Issue 2190703002: Require sanity: sort kwargs expectations. NOT OPTIONAL. (Closed) Base URL: https://chromium.googlesource.com/infra/testing/testing_support.git@master
Patch Set: final, i hope Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« testing_support/auto_stub.py ('K') | « testing_support/auto_stub.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import sys 5 import sys
6 import unittest 6 import unittest
7 7
8 from testing_support import auto_stub 8 from testing_support import auto_stub
9 9
10 10
11 class MockedObject(auto_stub.SimpleMock): 11 class MockedObject(auto_stub.SimpleMock):
12 def method1(self, *args, **kwargs): 12 def method1(self, *args, **kwargs):
13 self._register_call(*args, **kwargs) 13 self._register_call(*args, **kwargs)
14 14
15 15
16 class TestSimpleMock(unittest.TestCase): 16 class TestSimpleMock(unittest.TestCase):
17 def test_auto_mock(self): 17 def test_auto_mock(self):
18 obj = MockedObject(self) 18 obj = MockedObject(self)
19 obj.method1(1, param=2) 19 obj.method1(1, param=2)
20 obj.check_calls(['method1(1, param=2)']) 20 obj.check_calls(['method1(1, param=2)'])
21 21
22 def test_auto_mock_sorted(self): 22 def test_auto_mock_sorted(self):
23 obj = MockedObject(self) 23 obj = MockedObject(self)
24 # Regardless of order here, ...
24 obj.method1(1, c=4, a=2, b=3) 25 obj.method1(1, c=4, a=2, b=3)
25 # tandrii@ is very surprised this is actually deterministic. 26 obj.method1(1, a=2, c=4, b=3)
26 obj.check_calls(['method1(1, a=2, c=4, b=3)']) 27 # ... order here is sorted and hence totally deterministic.
27 # The proper and sane way is to always sort them. 28 obj.check_calls([
28 obj = MockedObject(self, sorted_kwargs=True) 29 'method1(1, a=2, b=3, c=4)',
29 obj.method1(1, c=4, a=2, b=3) 30 auto_stub.format_call('method1', 1, b=3, c=4, a=2),
Sergiy Byelozyorov 2016/07/28 13:01:36 nice that you also randomize the order here
30 obj.check_calls(['method1(1, a=2, b=3, c=4)']) 31 ])
31 32
32 33
33 def return_one(): 34 def return_one():
34 return 1 35 return 1
35 36
36 def return_two(): 37 def return_two():
37 return 2 38 return 2
38 39
39 class TestAutoStubTestCase(auto_stub.TestCase): 40 class TestAutoStubTestCase(auto_stub.TestCase):
40 def test_mock_method(self): 41 def test_mock_method(self):
41 # mock one function 42 # mock one function
42 self.assertEqual(return_one(), 1) 43 self.assertEqual(return_one(), 1)
43 self.mock(sys.modules[__name__], 'return_one', lambda: 'mocked') 44 self.mock(sys.modules[__name__], 'return_one', lambda: 'mocked')
44 self.assertEqual(return_one(), 'mocked') 45 self.assertEqual(return_one(), 'mocked')
45 auto_stub.TestCase.tearDown(self) 46 auto_stub.TestCase.tearDown(self)
46 self.assertEqual(return_one(), 1) 47 self.assertEqual(return_one(), 1)
47 48
48 # mock two functions 49 # mock two functions
49 self.assertEqual(return_one(), 1) 50 self.assertEqual(return_one(), 1)
50 self.assertEqual(return_two(), 2) 51 self.assertEqual(return_two(), 2)
51 self.mock(sys.modules[__name__], 'return_one', lambda: 'mocked1') 52 self.mock(sys.modules[__name__], 'return_one', lambda: 'mocked1')
52 self.mock(sys.modules[__name__], 'return_two', lambda: 'mocked2') 53 self.mock(sys.modules[__name__], 'return_two', lambda: 'mocked2')
53 self.assertEqual(return_one(), 'mocked1') 54 self.assertEqual(return_one(), 'mocked1')
54 self.assertEqual(return_two(), 'mocked2') 55 self.assertEqual(return_two(), 'mocked2')
55 auto_stub.TestCase.tearDown(self) 56 auto_stub.TestCase.tearDown(self)
56 self.assertEqual(return_one(), 1) 57 self.assertEqual(return_one(), 1)
57 self.assertEqual(return_two(), 2) 58 self.assertEqual(return_two(), 2)
OLDNEW
« testing_support/auto_stub.py ('K') | « testing_support/auto_stub.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698