diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index 1e60b1d..50e1ac4 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -13,6 +13,14 @@
 from Tkinter import Tcl
 from _tkinter import TclError
 
+tcl_version = _tkinter.TCL_VERSION.split('.')
+try:
+    for i in range(len(tcl_version)):
+        tcl_version[i] = int(tcl_version[i])
+except ValueError:
+    pass
+tcl_version = tuple(tcl_version)
+
 
 class TkinterTest(unittest.TestCase):
 
@@ -209,9 +217,12 @@
             (('a', 3.4), ('a', 3.4)),
             ((), ()),
             (call('list', 1, '2', (3.4,)), (1, '2', (3.4,))),
-            (call('dict', 'create', 1, u'\u20ac', '\xe2\x82\xac', (3.4,)),
-                    (1, u'\u20ac', u'\u20ac', (3.4,))),
         ]
+        if tcl_version >= (8, 5):
+            testcases += [
+                (call('dict', 'create', 1, u'\u20ac', '\xe2\x82\xac', (3.4,)),
+                        (1, u'\u20ac', u'\u20ac', (3.4,))),
+            ]
         for arg, res in testcases:
             self.assertEqual(splitlist(arg), res)
         self.assertRaises(TclError, splitlist, '{')
@@ -243,9 +254,12 @@
             (('a', (2, 3.4)), ('a', (2, 3.4))),
             ((), ()),
             (call('list', 1, '2', (3.4,)), (1, '2', (3.4,))),
-            (call('dict', 'create', 12, u'\u20ac', '\xe2\x82\xac', (3.4,)),
-                    (12, u'\u20ac', u'\u20ac', (3.4,))),
         ]
+        if tcl_version >= (8, 5):
+            testcases += [
+                (call('dict', 'create', 12, u'\u20ac', '\xe2\x82\xac', (3.4,)),
+                        (12, u'\u20ac', u'\u20ac', (3.4,))),
+            ]
         for arg, res in testcases:
             self.assertEqual(split(arg), res)
 
