bpo-38202: Fix a crash in dict_view & non-itearble. (GH-16241)

diff --git a/Lib/test/test_dictviews.py b/Lib/test/test_dictviews.py
index 8410e8b..be271be 100644
--- a/Lib/test/test_dictviews.py
+++ b/Lib/test/test_dictviews.py
@@ -227,6 +227,25 @@
         self.assertEqual(items | iter([(1, 2)]), {(1, 2), (3, 4)})
         self.assertEqual(items - iter([(1, 2)]), {(3, 4)})
 
+    def test_set_operations_with_noniterable(self):
+        with self.assertRaises(TypeError):
+            {}.keys() & 1
+        with self.assertRaises(TypeError):
+            {}.keys() | 1
+        with self.assertRaises(TypeError):
+            {}.keys() ^ 1
+        with self.assertRaises(TypeError):
+            {}.keys() - 1
+
+        with self.assertRaises(TypeError):
+            {}.items() & 1
+        with self.assertRaises(TypeError):
+            {}.items() | 1
+        with self.assertRaises(TypeError):
+            {}.items() ^ 1
+        with self.assertRaises(TypeError):
+            {}.items() - 1
+
     def test_recursive_repr(self):
         d = {}
         d[42] = d.values()