Issue #20804: The unittest.mock.sentinel attributes now preserve their

identity when they are copied or pickled.
This commit is contained in:
Serhiy Storchaka 2017-01-11 20:13:03 +02:00
parent d4f5001bac
commit d9c956fb23
5 changed files with 33 additions and 0 deletions

View file

@ -1,4 +1,6 @@
import unittest
import copy
import pickle
from unittest.mock import sentinel, DEFAULT
@ -23,6 +25,17 @@ class SentinelTest(unittest.TestCase):
# If this doesn't raise an AttributeError then help(mock) is broken
self.assertRaises(AttributeError, lambda: sentinel.__bases__)
def testPickle(self):
for proto in range(pickle.HIGHEST_PROTOCOL+1):
with self.subTest(protocol=proto):
pickled = pickle.dumps(sentinel.whatever, proto)
unpickled = pickle.loads(pickled)
self.assertIs(unpickled, sentinel.whatever)
def testCopy(self):
self.assertIs(copy.copy(sentinel.whatever), sentinel.whatever)
self.assertIs(copy.deepcopy(sentinel.whatever), sentinel.whatever)
if __name__ == '__main__':
unittest.main()