#7092: Silence more py3k warnings. Patch by Florent Xicluna.
diff --git a/Lib/test/infinite_reload.py b/Lib/test/infinite_reload.py
index bfbec91..841ccad 100644
--- a/Lib/test/infinite_reload.py
+++ b/Lib/test/infinite_reload.py
@@ -3,5 +3,6 @@
 #  reload()ing. This module is imported by test_import.py:test_infinite_reload
 #  to make sure this doesn't happen any more.
 
+import imp
 import infinite_reload
-reload(infinite_reload)
+imp.reload(infinite_reload)
diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py
index 823559b..afde2e2 100644
--- a/Lib/test/inspect_fodder.py
+++ b/Lib/test/inspect_fodder.py
@@ -15,7 +15,7 @@
     fr = inspect.currentframe()
     st = inspect.stack()
     p = x
-    q = y / 0
+    q = y // 0
 
 # line 20
 class StupidGit:
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 6bc0dc3..db93db1 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -159,6 +159,7 @@
 import traceback
 import warnings
 import unittest
+import imp
 
 
 # Ignore ImportWarnings that only occur in the source tree,
@@ -955,7 +956,7 @@
             indirect_test()
     else:
         def run_the_test():
-            reload(the_module)
+            imp.reload(the_module)
 
     deltas = []
     nwarmup, ntracked, fname = huntrleaks
diff --git a/Lib/test/test_binop.py b/Lib/test/test_binop.py
index 8ae8f42..b1ef626 100644
--- a/Lib/test/test_binop.py
+++ b/Lib/test/test_binop.py
@@ -207,6 +207,9 @@
         """Compare two Rats for inequality."""
         return not self == other
 
+    # Silence Py3k warning
+    __hash__ = None
+
 class RatTestCase(unittest.TestCase):
     """Unit tests for Rat class and its support utilities."""
 
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 4dc3104..c313dcf 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -55,7 +55,7 @@
         context = foo()
         context.l = []
         context.n = 2 #submits per thread
-        context.nThreads = n / context.n
+        context.nThreads = n // context.n
         context.nFinished = 0
         context.lock = threading.Lock()
         context.event = threading.Event()
diff --git a/Lib/test/test_compiler.py b/Lib/test/test_compiler.py
index 937f000..c257f02 100644
--- a/Lib/test/test_compiler.py
+++ b/Lib/test/test_compiler.py
@@ -75,7 +75,7 @@
 
     def testTryExceptFinally(self):
         # Test that except and finally clauses in one try stmt are recognized
-        c = compiler.compile("try:\n 1/0\nexcept:\n e = 1\nfinally:\n f = 1",
+        c = compiler.compile("try:\n 1//0\nexcept:\n e = 1\nfinally:\n f = 1",
                              "<string>", "exec")
         dct = {}
         exec c in dct
diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py
index ccecfbd..685fd6e 100644
--- a/Lib/test/test_copy.py
+++ b/Lib/test/test_copy.py
@@ -661,7 +661,7 @@
         v = copy.deepcopy(u)
         self.assertNotEqual(v, u)
         self.assertEqual(len(v), 2)
-        (x, y), (z, t) = sorted(v.items(), key=lambda (k, v): k.i)
+        (x, y), (z, t) = sorted(v.items(), key=lambda pair: pair[0].i)
         self.assertFalse(x is a)
         self.assertEqual(x.i, a.i)
         self.assertTrue(y is b)
diff --git a/Lib/test/test_descrtut.py b/Lib/test/test_descrtut.py
index c455e6b..157b9f4 100644
--- a/Lib/test/test_descrtut.py
+++ b/Lib/test/test_descrtut.py
@@ -66,7 +66,7 @@
 statement or the built-in function eval():
 
     >>> def sorted(seq):
-    ...     seq.sort()
+    ...     seq.sort(key=str)
     ...     return seq
     >>> print sorted(a.keys())
     [1, 2]
diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py
index 7d3e72d..a91897e 100644
--- a/Lib/test/test_file.py
+++ b/Lib/test/test_file.py
@@ -127,7 +127,7 @@
         self.assertEquals(self.f.__exit__(None, None, None), None)
         # it must also return None if an exception was given
         try:
-            1/0
+            1 // 0
         except:
             self.assertEquals(self.f.__exit__(*sys.exc_info()), None)
 
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
index de8e539..63ac7fd 100644
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -43,6 +43,9 @@
         assert False, "__sub__ should not be invoked for comparisons"
     __rsub__ = __sub__
 
+    # Silence Py3k warning
+    __hash__ = None
+
 
 class DummyRational(object):
     """Test comparison of Fraction with a naive rational implementation."""
@@ -76,6 +79,10 @@
     def __float__(self):
         assert False, "__float__ should not be invoked"
 
+    # Silence Py3k warning
+    __hash__ = None
+
+
 class GcdTest(unittest.TestCase):
 
     def testMisc(self):
diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
index eb2324c..e8241e8 100644
--- a/Lib/test/test_ftplib.py
+++ b/Lib/test/test_ftplib.py
@@ -100,7 +100,8 @@
         sock.listen(5)
         sock.settimeout(2)
         ip, port = sock.getsockname()[:2]
-        ip = ip.replace('.', ','); p1 = port / 256; p2 = port % 256
+        ip = ip.replace('.', ',')
+        p1, p2 = divmod(port, 256)
         self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2))
         conn, addr = sock.accept()
         self.dtp = self.dtp_handler(conn, baseclass=self)
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index ab5bac2..aa672ab 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -116,7 +116,7 @@
 
     def test_error_propagation(self):
         def f(x, y):
-            x / y
+            x // y
         self.assertRaises(ZeroDivisionError, self.thetype(f, 1, 0))
         self.assertRaises(ZeroDivisionError, self.thetype(f, 1), 0)
         self.assertRaises(ZeroDivisionError, self.thetype(f), 1, 0)
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index b690134..87131d0 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -246,11 +246,11 @@
             self.fail("__enter__ on a closed file didn't raise an exception")
         try:
             with gzip.GzipFile(self.filename, "wb") as f:
-                1/0
+                1 // 0
         except ZeroDivisionError:
             pass
         else:
-            self.fail("1/0 didn't raise an exception")
+            self.fail("1 // 0 didn't raise an exception")
 
     def test_zero_padded_file(self):
         with gzip.GzipFile(self.filename, "wb") as f:
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index 05eecdb..c3fa2f0 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -7,6 +7,7 @@
 import py_compile
 import warnings
 import marshal
+import imp
 from test.test_support import (unlink, TESTFN, unload, run_unittest,
     check_warnings, TestFailed, EnvironmentVarGuard)
 
@@ -56,11 +57,10 @@
             f.close()
 
             try:
-                try:
-                    mod = __import__(TESTFN)
-                except ImportError, err:
-                    self.fail("import from %s failed: %s" % (ext, err))
-
+                mod = __import__(TESTFN)
+            except ImportError, err:
+                self.fail("import from %s failed: %s" % (ext, err))
+            else:
                 self.assertEquals(mod.a, a,
                     "module loaded (%s) but contents invalid" % mod)
                 self.assertEquals(mod.b, b,
@@ -69,10 +69,9 @@
                 os.unlink(source)
 
             try:
-                try:
-                    reload(mod)
-                except ImportError, err:
-                    self.fail("import from .pyc/.pyo failed: %s" % err)
+                imp.reload(mod)
+            except ImportError, err:
+                self.fail("import from .pyc/.pyo failed: %s" % err)
             finally:
                 try:
                     os.unlink(pyc)
@@ -121,7 +120,7 @@
 
     def testImpModule(self):
         # Verify that the imp module can correctly load and find .py files
-        import imp, os
+
         # XXX (ncoghlan): It would be nice to use test_support.CleanImport
         # here, but that breaks because the os module registers some
         # handlers in copy_reg on import. Since CleanImport doesn't
@@ -172,7 +171,7 @@
     def test_failing_import_sticks(self):
         source = TESTFN + os.extsep + "py"
         f = open(source, "w")
-        print >> f, "a = 1/0"
+        print >> f, "a = 1 // 0"
         f.close()
 
         # New in 2.4, we shouldn't be able to import that no matter how often
@@ -218,7 +217,7 @@
             print >> f, "b = 20//0"
             f.close()
 
-            self.assertRaises(ZeroDivisionError, reload, mod)
+            self.assertRaises(ZeroDivisionError, imp.reload, mod)
 
             # But we still expect the module to be in sys.modules.
             mod = sys.modules.get(TESTFN)
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index b91c0a1..1c12252 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -387,11 +387,11 @@
             f = None
             try:
                 with self.open(support.TESTFN, "wb", bufsize) as f:
-                    1/0
+                    1 // 0
             except ZeroDivisionError:
                 self.assertEqual(f.closed, True)
             else:
-                self.fail("1/0 didn't raise an exception")
+                self.fail("1 // 0 didn't raise an exception")
 
     # issue 5008
     def test_append_mode_tell(self):
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index ce23c21..e91ac28 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -9,6 +9,7 @@
 import random
 import copy
 import pickle
+from functools import reduce
 maxsize = test_support.MAX_Py_ssize_t
 minsize = -maxsize-1
 
@@ -122,7 +123,7 @@
             values = [5*x-12 for x in range(n)]
             for r in range(n+2):
                 result = list(combinations(values, r))
-                self.assertEqual(len(result), 0 if r>n else fact(n) / fact(r) / fact(n-r)) # right number of combs
+                self.assertEqual(len(result), 0 if r>n else fact(n) // fact(r) // fact(n-r)) # right number of combs
                 self.assertEqual(len(result), len(set(result)))         # no repeats
                 self.assertEqual(result, sorted(result))                # lexicographic order
                 for c in result:
@@ -178,7 +179,7 @@
         def numcombs(n, r):
             if not n:
                 return 0 if r else 1
-            return fact(n+r-1) / fact(r)/ fact(n-1)
+            return fact(n+r-1) // fact(r) // fact(n-1)
 
         for n in range(7):
             values = [5*x-12 for x in range(n)]
@@ -257,7 +258,7 @@
             values = [5*x-12 for x in range(n)]
             for r in range(n+2):
                 result = list(permutations(values, r))
-                self.assertEqual(len(result), 0 if r>n else fact(n) / fact(n-r))      # right number of perms
+                self.assertEqual(len(result), 0 if r>n else fact(n) // fact(n-r))      # right number of perms
                 self.assertEqual(len(result), len(set(result)))         # no repeats
                 self.assertEqual(result, sorted(result))                # lexicographic order
                 for p in result:
@@ -288,9 +289,9 @@
 
                 # Check size
                 self.assertEquals(len(prod), n**r)
-                self.assertEquals(len(cwr), (fact(n+r-1) / fact(r)/ fact(n-1)) if n else (not r))
-                self.assertEquals(len(perm), 0 if r>n else fact(n) / fact(n-r))
-                self.assertEquals(len(comb), 0 if r>n else fact(n) / fact(r) / fact(n-r))
+                self.assertEquals(len(cwr), (fact(n+r-1) // fact(r) // fact(n-1)) if n else (not r))
+                self.assertEquals(len(perm), 0 if r>n else fact(n) // fact(n-r))
+                self.assertEquals(len(comb), 0 if r>n else fact(n) // fact(r) // fact(n-r))
 
                 # Check lexicographic order without repeated tuples
                 self.assertEquals(prod, sorted(set(prod)))
@@ -543,7 +544,10 @@
                 [range(1000), range(0), range(3000,3050), range(1200), range(1500)],
                 [range(1000), range(0), range(3000,3050), range(1200), range(1500), range(0)],
             ]:
-            target = map(None, *args)
+            # target = map(None, *args) <- this raises a py3k warning
+            # this is the replacement:
+            target = [tuple([arg[i] if i < len(arg) else None for arg in args])
+                      for i in range(max(map(len, args)))]
             self.assertEqual(list(izip_longest(*args)), target)
             self.assertEqual(list(izip_longest(*args, **{})), target)
             target = [tuple((e is None and 'X' or e) for e in t) for t in target]   # Replace None fills with 'X'
@@ -555,7 +559,8 @@
         self.assertEqual(list(izip_longest([])), zip([]))
         self.assertEqual(list(izip_longest('abcdef')), zip('abcdef'))
 
-        self.assertEqual(list(izip_longest('abc', 'defg', **{})), map(None, 'abc', 'defg')) # empty keyword dict
+        self.assertEqual(list(izip_longest('abc', 'defg', **{})),
+                         zip(list('abc') + [None], 'defg'))  # empty keyword dict
         self.assertRaises(TypeError, izip_longest, 3)
         self.assertRaises(TypeError, izip_longest, range(3), 3)
 
@@ -1431,7 +1436,7 @@
 # is differencing with a range so that consecutive numbers all appear in
 # same group.
 >>> data = [ 1,  4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]
->>> for k, g in groupby(enumerate(data), lambda (i,x):i-x):
+>>> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]):
 ...     print map(operator.itemgetter(1), g)
 ...
 [1]
diff --git a/Lib/test/test_multibytecodec_support.py b/Lib/test/test_multibytecodec_support.py
index 3afe3a9..36245b7 100644
--- a/Lib/test/test_multibytecodec_support.py
+++ b/Lib/test/test_multibytecodec_support.py
@@ -307,7 +307,7 @@
                 continue
 
             unich = unichrs(data[1])
-            if ord(unich) == 0xfffd or urt_wa.has_key(unich):
+            if ord(unich) == 0xfffd or unich in urt_wa:
                 continue
             urt_wa[unich] = csetch
 
diff --git a/Lib/test/test_mutants.py b/Lib/test/test_mutants.py
index a219450..69c381e 100644
--- a/Lib/test/test_mutants.py
+++ b/Lib/test/test_mutants.py
@@ -210,7 +210,7 @@
         # Tim sez:  "luck of the draw; crashes with or without for me."
         print >> f
 
-        return `"machiavelli"`
+        return repr("machiavelli")
 
     def __hash__(self):
         return 0
diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py
index 4a380b2..e9149d9 100644
--- a/Lib/test/test_optparse.py
+++ b/Lib/test/test_optparse.py
@@ -26,12 +26,6 @@
 from optparse import _match_abbrev
 from optparse import _parse_num
 
-# Do the right thing with boolean values for all known Python versions.
-try:
-    True, False
-except NameError:
-    (True, False) = (1, 0)
-
 retype = type(re.compile(''))
 
 class InterceptedError(Exception):
diff --git a/Lib/test/test_ossaudiodev.py b/Lib/test/test_ossaudiodev.py
index df04705..6de4671 100644
--- a/Lib/test/test_ossaudiodev.py
+++ b/Lib/test/test_ossaudiodev.py
@@ -45,7 +45,8 @@
         try:
             dsp = ossaudiodev.open('w')
         except IOError, msg:
-            if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
+            if msg.args[0] in (errno.EACCES, errno.ENOENT,
+                               errno.ENODEV, errno.EBUSY):
                 raise unittest.SkipTest(msg)
             raise
 
@@ -71,7 +72,7 @@
                 self.fail("dsp.%s not read-only" % attr)
 
         # Compute expected running time of sound sample (in seconds).
-        expected_time = float(len(data)) / (ssize/8) / nchannels / rate
+        expected_time = float(len(data)) / (ssize//8) / nchannels / rate
 
         # set parameters based on .au file headers
         dsp.setparameters(AFMT_S16_NE, nchannels, rate)
@@ -162,7 +163,8 @@
     try:
         dsp = ossaudiodev.open('w')
     except (ossaudiodev.error, IOError), msg:
-        if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
+        if msg.args[0] in (errno.EACCES, errno.ENOENT,
+                           errno.ENODEV, errno.EBUSY):
             raise unittest.SkipTest(msg)
         raise
     dsp.close()
diff --git a/Lib/test/test_pkgimport.py b/Lib/test/test_pkgimport.py
index 8aa224a..86ea058 100644
--- a/Lib/test/test_pkgimport.py
+++ b/Lib/test/test_pkgimport.py
@@ -6,14 +6,14 @@
 
     def __init__(self, *args, **kw):
         self.package_name = 'PACKAGE_'
-        while sys.modules.has_key(self.package_name):
+        while self.package_name in sys.modules:
             self.package_name += random.choose(string.letters)
         self.module_name = self.package_name + '.foo'
         unittest.TestCase.__init__(self, *args, **kw)
 
     def remove_modules(self):
         for module_name in (self.package_name, self.module_name):
-            if sys.modules.has_key(module_name):
+            if module_name in sys.modules:
                 del sys.modules[module_name]
 
     def setUp(self):
@@ -52,8 +52,8 @@
         try: __import__(self.module_name)
         except SyntaxError: pass
         else: raise RuntimeError, 'Failed to induce SyntaxError'
-        self.assertTrue(not sys.modules.has_key(self.module_name) and
-                     not hasattr(sys.modules[self.package_name], 'foo'))
+        self.assertNotIn(self.module_name, sys.modules)
+        self.assertFalse(hasattr(sys.modules[self.package_name], 'foo'))
 
         # ...make up a variable name that isn't bound in __builtins__
         var = 'a'
diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py
index 9ea44d7..0628a57 100644
--- a/Lib/test/test_pyexpat.py
+++ b/Lib/test/test_pyexpat.py
@@ -554,7 +554,7 @@
 
         self.n=0
         parser.Parse(xml1, 0)
-        parser.buffer_size /= 2
+        parser.buffer_size //= 2
         self.assertEquals(parser.buffer_size, 1024)
         parser.Parse(xml2, 1)
         self.assertEquals(self.n, 4)
diff --git a/Lib/test/test_queue.py b/Lib/test/test_queue.py
index 2fa36b7..715466f 100644
--- a/Lib/test/test_queue.py
+++ b/Lib/test/test_queue.py
@@ -102,21 +102,23 @@
             q.put(i)
             self.assertTrue(not q.empty(), "Queue should not be empty")
         self.assertTrue(not q.full(), "Queue should not be full")
-        q.put("last")
+        last = 2 * QUEUE_SIZE
+        full = 3 * 2 * QUEUE_SIZE
+        q.put(last)
         self.assertTrue(q.full(), "Queue should be full")
         try:
-            q.put("full", block=0)
+            q.put(full, block=0)
             self.fail("Didn't appear to block with a full queue")
         except Queue.Full:
             pass
         try:
-            q.put("full", timeout=0.01)
+            q.put(full, timeout=0.01)
             self.fail("Didn't appear to time-out with a full queue")
         except Queue.Full:
             pass
         # Test a blocking put
-        self.do_blocking_test(q.put, ("full",), q.get, ())
-        self.do_blocking_test(q.put, ("full", True, 10), q.get, ())
+        self.do_blocking_test(q.put, (full,), q.get, ())
+        self.do_blocking_test(q.put, (full, True, 10), q.get, ())
         # Empty it
         for i in range(QUEUE_SIZE):
             q.get()
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index 793ab0b..ce07efc 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -6,6 +6,7 @@
 import pickle
 import warnings
 from math import log, exp, sqrt, pi, fsum, sin
+from functools import reduce
 from test import test_support
 
 class TestBasicOps(unittest.TestCase):
diff --git a/Lib/test/test_rfc822.py b/Lib/test/test_rfc822.py
index 8c2b2c6..d8a0280 100644
--- a/Lib/test/test_rfc822.py
+++ b/Lib/test/test_rfc822.py
@@ -46,9 +46,9 @@
                 continue
             i = i + 1
             self.assertEqual(mn, n,
-                             "Un-expected name: %s != %s" % (`mn`, `n`))
+                             "Un-expected name: %r != %r" % (mn, n))
             self.assertEqual(ma, a,
-                             "Un-expected address: %s != %s" % (`ma`, `a`))
+                             "Un-expected address: %r != %r" % (ma, a))
             if mn == n and ma == a:
                 pass
             else:
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 0d25129..e59fce2 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -266,7 +266,7 @@
         site.abs__file__()
         for module in (sys, os, __builtin__):
             try:
-                self.assertTrue(os.path.isabs(module.__file__), `module`)
+                self.assertTrue(os.path.isabs(module.__file__), repr(module))
             except AttributeError:
                 continue
         # We could try everything in sys.modules; however, when regrtest.py
@@ -318,7 +318,7 @@
 
     def test_sitecustomize_executed(self):
         # If sitecustomize is available, it should have been imported.
-        if not sys.modules.has_key("sitecustomize"):
+        if "sitecustomize" not in sys.modules:
             try:
                 import sitecustomize
             except ImportError:
diff --git a/Lib/test/test_threadsignals.py b/Lib/test/test_threadsignals.py
index e1096bd..b28705f 100644
--- a/Lib/test/test_threadsignals.py
+++ b/Lib/test/test_threadsignals.py
@@ -14,7 +14,7 @@
 signalled_all=thread.allocate_lock()
 
 
-def registerSignals((for_usr1, for_usr2, for_alrm)):
+def registerSignals(for_usr1, for_usr2, for_alrm):
     usr1 = signal.signal(signal.SIGUSR1, for_usr1)
     usr2 = signal.signal(signal.SIGUSR2, for_usr2)
     alrm = signal.signal(signal.SIGALRM, for_alrm)
@@ -74,11 +74,11 @@
                           signal.SIGUSR2 : {'tripped': 0, 'tripped_by': 0 },
                           signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } }
 
-    oldsigs = registerSignals((handle_signals, handle_signals, handle_signals))
+    oldsigs = registerSignals(handle_signals, handle_signals, handle_signals)
     try:
         run_unittest(ThreadSignals)
     finally:
-        registerSignals(oldsigs)
+        registerSignals(*oldsigs)
 
 if __name__ == '__main__':
     test_main()
diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py
index f69af8d..df8c56f 100644
--- a/Lib/test/test_trace.py
+++ b/Lib/test/test_trace.py
@@ -401,7 +401,7 @@
         we're testing, so that the 'exception' trace event fires."""
         if self.raiseOnEvent == 'exception':
             x = 0
-            y = 1/x
+            y = 1 // x
         else:
             return 1
 
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index e78fea2..f7e7c8d 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -4,6 +4,7 @@
 from StringIO import StringIO
 import sys
 import unittest
+from imp import reload
 from test.test_support import run_unittest, is_jython, Error
 
 import traceback
@@ -148,7 +149,7 @@
     def test_format_exception_only_bad__str__(self):
         class X(Exception):
             def __str__(self):
-                1/0
+                1 // 0
         err = traceback.format_exception_only(X, X())
         self.assertEqual(len(err), 1)
         str_value = '<unprintable %s object>' % X.__name__
diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py
index b572b91..3e33e31 100644
--- a/Lib/test/test_with.py
+++ b/Lib/test/test_with.py
@@ -520,7 +520,7 @@
         self.assertRaises(AssertionError, falseAsBool)
 
         def failAsBool():
-            with cm(lambda: 1//0):
+            with cm(lambda: 1 // 0):
                 self.fail("Should NOT see this")
         self.assertRaises(ZeroDivisionError, failAsBool)
 
@@ -628,7 +628,7 @@
             def __exit__(self, t, v, tb): return True
         try:
             with AfricanSwallow():
-                1/0
+                1 // 0
         except ZeroDivisionError:
             self.fail("ZeroDivisionError should have been swallowed")
 
@@ -638,7 +638,7 @@
             def __exit__(self, t, v, tb): return False
         try:
             with EuropeanSwallow():
-                1/0
+                1 // 0
         except ZeroDivisionError:
             pass
         else:
diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py
index a21d6e2..54be337 100755
--- a/Lib/test/test_wsgiref.py
+++ b/Lib/test/test_wsgiref.py
@@ -432,10 +432,10 @@
         env = handler.environ
         from os import environ
         for k,v in environ.items():
-            if not empty.has_key(k):
+            if k not in empty:
                 self.assertEqual(env[k],v)
         for k,v in empty.items():
-            self.assertTrue(env.has_key(k))
+            self.assertIn(k, env)
 
     def testEnviron(self):
         h = TestHandler(X="Y")
@@ -448,7 +448,7 @@
         h = BaseCGIHandler(None,None,None,{})
         h.setup_environ()
         for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors':
-            self.assertTrue(h.environ.has_key(key))
+            self.assertIn(key, h.environ)
 
     def testScheme(self):
         h=TestHandler(HTTPS="on"); h.setup_environ()
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index 65c99f1..2e24ed1 100644
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -37,7 +37,7 @@
     """
 
 def check_method(method):
-    if not callable(method):
+    if not hasattr(method, '__call__'):
         print method, "not callable"
 
 def serialize(ET, elem, encoding=None):
diff --git a/Lib/test/test_xml_etree_c.py b/Lib/test/test_xml_etree_c.py
index 3d5c14f..68e6d2c 100644
--- a/Lib/test/test_xml_etree_c.py
+++ b/Lib/test/test_xml_etree_c.py
@@ -35,7 +35,7 @@
     """
 
 def check_method(method):
-    if not callable(method):
+    if not hasattr(method, '__call__'):
         print method, "not callable"
 
 def serialize(ET, elem, encoding=None):
diff --git a/Lib/test/test_xpickle.py b/Lib/test/test_xpickle.py
index 3ed7ef7..f41c97a 100644
--- a/Lib/test/test_xpickle.py
+++ b/Lib/test/test_xpickle.py
@@ -25,7 +25,7 @@
 mod_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                         "pickletester.py"))
 pickletester = types.ModuleType("test.pickletester")
-execfile(mod_path, pickletester.__dict__, pickletester.__dict__)
+exec compile(open(mod_path).read(), mod_path, 'exec') in pickletester.__dict__
 AbstractPickleTests = pickletester.AbstractPickleTests
 if pickletester.__name__ in sys.modules:
     raise RuntimeError("Did not expect to find test.pickletester loaded")