Skip to content

Commit 45a31a1

Browse files
[3.7] bpo-33747: Avoid mutating the global sys.modules dict in unittest.mock tests (GH-8520) (GH-11031)
(cherry picked from commit 3cf7438) Co-authored-by: Anirudha Bose <[email protected]> https://bugs.python.org/issue33747
1 parent 3cae16d commit 45a31a1

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

Lib/unittest/test/testmock/testpatch.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from unittest.test.testmock import support
1010
from unittest.test.testmock.support import SomeClass, is_instance
1111

12+
from test.test_importlib.util import uncache
1213
from unittest.mock import (
1314
NonCallableMock, CallableMixin, sentinel,
1415
MagicMock, Mock, NonCallableMagicMock, patch, _patch,
@@ -1660,20 +1661,19 @@ def test_mock_calls_with_patch(self):
16601661

16611662

16621663
def test_patch_imports_lazily(self):
1663-
sys.modules.pop('squizz', None)
1664-
16651664
p1 = patch('squizz.squozz')
16661665
self.assertRaises(ImportError, p1.start)
16671666

1668-
squizz = Mock()
1669-
squizz.squozz = 6
1670-
sys.modules['squizz'] = squizz
1671-
p1 = patch('squizz.squozz')
1672-
squizz.squozz = 3
1673-
p1.start()
1674-
p1.stop()
1675-
self.assertEqual(squizz.squozz, 3)
1667+
with uncache('squizz'):
1668+
squizz = Mock()
1669+
sys.modules['squizz'] = squizz
16761670

1671+
squizz.squozz = 6
1672+
p1 = patch('squizz.squozz')
1673+
squizz.squozz = 3
1674+
p1.start()
1675+
p1.stop()
1676+
self.assertEqual(squizz.squozz, 3)
16771677

16781678
def test_patch_propogrates_exc_on_exit(self):
16791679
class holder:
@@ -1696,7 +1696,12 @@ def with_custom_patch(target):
16961696
def test(mock):
16971697
raise RuntimeError
16981698

1699-
self.assertRaises(RuntimeError, test)
1699+
with uncache('squizz'):
1700+
squizz = Mock()
1701+
sys.modules['squizz'] = squizz
1702+
1703+
self.assertRaises(RuntimeError, test)
1704+
17001705
self.assertIs(holder.exc_info[0], RuntimeError)
17011706
self.assertIsNotNone(holder.exc_info[1],
17021707
'exception value not propgated')

0 commit comments

Comments
 (0)