diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py
index e3503c4..6b64f10 100644
--- a/Lib/test/test_copy.py
+++ b/Lib/test/test_copy.py
@@ -526,6 +526,26 @@
         self.assertEqual(x.foo, y.foo)
         self.assertTrue(x.foo is not y.foo)
 
+    def test_deepcopy_dict_subclass(self):
+        class C(dict):
+            def __init__(self, d=None):
+                if not d:
+                    d = {}
+                self._keys = list(d.keys())
+                dict.__init__(self, d)
+            def __setitem__(self, key, item):
+                dict.__setitem__(self, key, item)
+                if key not in self._keys:
+                    self._keys.append(key)
+        x = C(d={'foo':0})
+        y = copy.deepcopy(x)
+        self.assertEqual(x, y)
+        self.assertEqual(x._keys, y._keys)
+        self.assertTrue(x is not y)
+        x['bar'] = 1
+        self.assertNotEqual(x, y)
+        self.assertNotEqual(x._keys, y._keys)
+
     def test_copy_list_subclass(self):
         class C(list):
             pass
