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

(cherry picked from commit 3cf74384b5)


Co-authored-by: Anirudha Bose <ani07nov@gmail.com>


https://bugs.python.org/issue33747
This commit is contained in:
Miss Islington (bot) 2018-12-11 02:17:29 -08:00 committed by GitHub
parent 3cae16d2e9
commit 45a31a1ec1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 11 deletions

View File

@ -9,6 +9,7 @@ import unittest
from unittest.test.testmock import support
from unittest.test.testmock.support import SomeClass, is_instance
from test.test_importlib.util import uncache
from unittest.mock import (
NonCallableMock, CallableMixin, sentinel,
MagicMock, Mock, NonCallableMagicMock, patch, _patch,
@ -1660,20 +1661,19 @@ class PatchTest(unittest.TestCase):
def test_patch_imports_lazily(self):
sys.modules.pop('squizz', None)
p1 = patch('squizz.squozz')
self.assertRaises(ImportError, p1.start)
squizz = Mock()
squizz.squozz = 6
sys.modules['squizz'] = squizz
p1 = patch('squizz.squozz')
squizz.squozz = 3
p1.start()
p1.stop()
self.assertEqual(squizz.squozz, 3)
with uncache('squizz'):
squizz = Mock()
sys.modules['squizz'] = squizz
squizz.squozz = 6
p1 = patch('squizz.squozz')
squizz.squozz = 3
p1.start()
p1.stop()
self.assertEqual(squizz.squozz, 3)
def test_patch_propogrates_exc_on_exit(self):
class holder:
@ -1696,7 +1696,12 @@ class PatchTest(unittest.TestCase):
def test(mock):
raise RuntimeError
self.assertRaises(RuntimeError, test)
with uncache('squizz'):
squizz = Mock()
sys.modules['squizz'] = squizz
self.assertRaises(RuntimeError, test)
self.assertIs(holder.exc_info[0], RuntimeError)
self.assertIsNotNone(holder.exc_info[1],
'exception value not propgated')