Kaydet (Commit) 3cf74384 authored tarafından Anirudha Bose's avatar Anirudha Bose Kaydeden (comit) Brett Cannon

bpo-33747: Avoid mutating the global sys.modules dict in unittest.mock tests (GH-8520)

üst 028f0ef4
...@@ -9,6 +9,7 @@ import unittest ...@@ -9,6 +9,7 @@ import unittest
from unittest.test.testmock import support from unittest.test.testmock import support
from unittest.test.testmock.support import SomeClass, is_instance from unittest.test.testmock.support import SomeClass, is_instance
from test.test_importlib.util import uncache
from unittest.mock import ( from unittest.mock import (
NonCallableMock, CallableMixin, sentinel, NonCallableMock, CallableMixin, sentinel,
MagicMock, Mock, NonCallableMagicMock, patch, _patch, MagicMock, Mock, NonCallableMagicMock, patch, _patch,
...@@ -1660,21 +1661,20 @@ class PatchTest(unittest.TestCase): ...@@ -1660,21 +1661,20 @@ class PatchTest(unittest.TestCase):
def test_patch_imports_lazily(self): def test_patch_imports_lazily(self):
sys.modules.pop('squizz', None)
p1 = patch('squizz.squozz') p1 = patch('squizz.squozz')
self.assertRaises(ImportError, p1.start) self.assertRaises(ImportError, p1.start)
with uncache('squizz'):
squizz = Mock() squizz = Mock()
squizz.squozz = 6
sys.modules['squizz'] = squizz sys.modules['squizz'] = squizz
squizz.squozz = 6
p1 = patch('squizz.squozz') p1 = patch('squizz.squozz')
squizz.squozz = 3 squizz.squozz = 3
p1.start() p1.start()
p1.stop() p1.stop()
self.assertEqual(squizz.squozz, 3) self.assertEqual(squizz.squozz, 3)
def test_patch_propogrates_exc_on_exit(self): def test_patch_propogrates_exc_on_exit(self):
class holder: class holder:
exc_info = None, None, None exc_info = None, None, None
...@@ -1696,7 +1696,12 @@ class PatchTest(unittest.TestCase): ...@@ -1696,7 +1696,12 @@ class PatchTest(unittest.TestCase):
def test(mock): def test(mock):
raise RuntimeError raise RuntimeError
with uncache('squizz'):
squizz = Mock()
sys.modules['squizz'] = squizz
self.assertRaises(RuntimeError, test) self.assertRaises(RuntimeError, test)
self.assertIs(holder.exc_info[0], RuntimeError) self.assertIs(holder.exc_info[0], RuntimeError)
self.assertIsNotNone(holder.exc_info[1], self.assertIsNotNone(holder.exc_info[1],
'exception value not propgated') 'exception value not propgated')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment