Merged revisions 73715 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k

........
  r73715 | benjamin.peterson | 2009-07-01 01:06:06 +0200 (Mi, 01 Jul 2009) | 1 line

  convert old fail* assertions to assert*
........
diff --git a/Lib/test/mapping_tests.py b/Lib/test/mapping_tests.py
index b8bbc9a..c34bd59 100644
--- a/Lib/test/mapping_tests.py
+++ b/Lib/test/mapping_tests.py
@@ -50,15 +50,15 @@
         for key, value in self.reference.items():
             self.assertEqual(d[key], value)
         knownkey = list(self.other.keys())[0]
-        self.failUnlessRaises(KeyError, lambda:d[knownkey])
+        self.assertRaises(KeyError, lambda:d[knownkey])
         #len
         self.assertEqual(len(p), 0)
         self.assertEqual(len(d), len(self.reference))
         #__contains__
         for k in self.reference:
-            self.assert_(k in d)
+            self.assertTrue(k in d)
         for k in self.other:
-            self.failIf(k in d)
+            self.assertFalse(k in d)
         #cmp
         self.assertEqual(p, p)
         self.assertEqual(d, d)
@@ -69,10 +69,10 @@
         if not d: self.fail("Full mapping must compare to True")
         # keys(), items(), iterkeys() ...
         def check_iterandlist(iter, lst, ref):
-            self.assert_(hasattr(iter, '__next__'))
-            self.assert_(hasattr(iter, '__iter__'))
+            self.assertTrue(hasattr(iter, '__next__'))
+            self.assertTrue(hasattr(iter, '__iter__'))
             x = list(iter)
-            self.assert_(set(x)==set(lst)==set(ref))
+            self.assertTrue(set(x)==set(lst)==set(ref))
         check_iterandlist(iter(d.keys()), list(d.keys()),
                           self.reference.keys())
         check_iterandlist(iter(d), list(d.keys()), self.reference.keys())
@@ -85,7 +85,7 @@
         knownkey, knownvalue = next(iter(self.other.items()))
         self.assertEqual(d.get(key, knownvalue), value)
         self.assertEqual(d.get(knownkey, knownvalue), knownvalue)
-        self.failIf(knownkey in d)
+        self.assertFalse(knownkey in d)
 
     def test_write(self):
         # Test for write operations on mapping
@@ -96,7 +96,7 @@
             self.assertEqual(p[key], value)
         for key in self.reference.keys():
             del p[key]
-            self.failUnlessRaises(KeyError, lambda:p[key])
+            self.assertRaises(KeyError, lambda:p[key])
         p = self._empty_mapping()
         #update
         p.update(self.reference)
@@ -115,16 +115,16 @@
         self.assertEqual(d[knownkey], knownvalue)
         #pop
         self.assertEqual(d.pop(knownkey), knownvalue)
-        self.failIf(knownkey in d)
+        self.assertFalse(knownkey in d)
         self.assertRaises(KeyError, d.pop, knownkey)
         default = 909
         d[knownkey] = knownvalue
         self.assertEqual(d.pop(knownkey, default), knownvalue)
-        self.failIf(knownkey in d)
+        self.assertFalse(knownkey in d)
         self.assertEqual(d.pop(knownkey, default), default)
         #popitem
         key, value = d.popitem()
-        self.failIf(key in d)
+        self.assertFalse(key in d)
         self.assertEqual(value, self.reference[key])
         p=self._empty_mapping()
         self.assertRaises(KeyError, p.popitem)
@@ -133,17 +133,17 @@
         self.assertEqual(self._empty_mapping(), self._empty_mapping())
 
     def test_bool(self):
-        self.assert_(not self._empty_mapping())
-        self.assert_(self.reference)
-        self.assert_(bool(self._empty_mapping()) is False)
-        self.assert_(bool(self.reference) is True)
+        self.assertTrue(not self._empty_mapping())
+        self.assertTrue(self.reference)
+        self.assertTrue(bool(self._empty_mapping()) is False)
+        self.assertTrue(bool(self.reference) is True)
 
     def test_keys(self):
         d = self._empty_mapping()
         self.assertEqual(list(d.keys()), [])
         d = self.reference
-        self.assert_(list(self.inmapping.keys())[0] in d.keys())
-        self.assert_(list(self.other.keys())[0] not in d.keys())
+        self.assertTrue(list(self.inmapping.keys())[0] in d.keys())
+        self.assertTrue(list(self.other.keys())[0] not in d.keys())
         self.assertRaises(TypeError, d.keys, None)
 
     def test_values(self):
@@ -268,10 +268,10 @@
 
     def test_get(self):
         d = self._empty_mapping()
-        self.assert_(d.get(list(self.other.keys())[0]) is None)
+        self.assertTrue(d.get(list(self.other.keys())[0]) is None)
         self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
         d = self.reference
-        self.assert_(d.get(list(self.other.keys())[0]) is None)
+        self.assertTrue(d.get(list(self.other.keys())[0]) is None)
         self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
         self.assertEqual(d.get(list(self.inmapping.keys())[0]),
                          list(self.inmapping.values())[0])
@@ -304,15 +304,15 @@
 class TestMappingProtocol(BasicTestMappingProtocol):
     def test_constructor(self):
         BasicTestMappingProtocol.test_constructor(self)
-        self.assert_(self._empty_mapping() is not self._empty_mapping())
+        self.assertTrue(self._empty_mapping() is not self._empty_mapping())
         self.assertEqual(self.type2test(x=1, y=2), {"x": 1, "y": 2})
 
     def test_bool(self):
         BasicTestMappingProtocol.test_bool(self)
-        self.assert_(not self._empty_mapping())
-        self.assert_(self._full_mapping({"x": "y"}))
-        self.assert_(bool(self._empty_mapping()) is False)
-        self.assert_(bool(self._full_mapping({"x": "y"})) is True)
+        self.assertTrue(not self._empty_mapping())
+        self.assertTrue(self._full_mapping({"x": "y"}))
+        self.assertTrue(bool(self._empty_mapping()) is False)
+        self.assertTrue(bool(self._full_mapping({"x": "y"})) is True)
 
     def test_keys(self):
         BasicTestMappingProtocol.test_keys(self)
@@ -320,9 +320,9 @@
         self.assertEqual(list(d.keys()), [])
         d = self._full_mapping({'a': 1, 'b': 2})
         k = d.keys()
-        self.assert_('a' in k)
-        self.assert_('b' in k)
-        self.assert_('c' not in k)
+        self.assertTrue('a' in k)
+        self.assertTrue('b' in k)
+        self.assertTrue('c' not in k)
 
     def test_values(self):
         BasicTestMappingProtocol.test_values(self)
@@ -337,12 +337,12 @@
 
     def test_contains(self):
         d = self._empty_mapping()
-        self.assert_(not ('a' in d))
-        self.assert_('a' not in d)
+        self.assertTrue(not ('a' in d))
+        self.assertTrue('a' not in d)
         d = self._full_mapping({'a': 1, 'b': 2})
-        self.assert_('a' in d)
-        self.assert_('b' in d)
-        self.assert_('c' not in d)
+        self.assertTrue('a' in d)
+        self.assertTrue('b' in d)
+        self.assertTrue('c' not in d)
 
         self.assertRaises(TypeError, d.__contains__)
 
@@ -421,7 +421,7 @@
     def test_fromkeys(self):
         self.assertEqual(self.type2test.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
         d = self._empty_mapping()
-        self.assert_(not(d.fromkeys('abc') is d))
+        self.assertTrue(not(d.fromkeys('abc') is d))
         self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
         self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
         self.assertEqual(d.fromkeys([]), {})
@@ -432,17 +432,17 @@
         class dictlike(self.type2test): pass
         self.assertEqual(dictlike.fromkeys('a'), {'a':None})
         self.assertEqual(dictlike().fromkeys('a'), {'a':None})
-        self.assert_(dictlike.fromkeys('a').__class__ is dictlike)
-        self.assert_(dictlike().fromkeys('a').__class__ is dictlike)
+        self.assertTrue(dictlike.fromkeys('a').__class__ is dictlike)
+        self.assertTrue(dictlike().fromkeys('a').__class__ is dictlike)
         # FIXME: the following won't work with UserDict, because it's an old style class
-        # self.assert_(type(dictlike.fromkeys('a')) is dictlike)
+        # self.assertTrue(type(dictlike.fromkeys('a')) is dictlike)
         class mydict(self.type2test):
             def __new__(cls):
                 return collections.UserDict()
         ud = mydict.fromkeys('ab')
         self.assertEqual(ud, {'a':None, 'b':None})
         # FIXME: the following won't work with UserDict, because it's an old style class
-        # self.assert_(isinstance(ud, collections.UserDict))
+        # self.assertTrue(isinstance(ud, collections.UserDict))
         self.assertRaises(TypeError, dict.fromkeys)
 
         class Exc(Exception): pass
@@ -472,16 +472,16 @@
         self.assertEqual(d.copy(), {1:1, 2:2, 3:3})
         d = self._empty_mapping()
         self.assertEqual(d.copy(), d)
-        self.assert_(isinstance(d.copy(), d.__class__))
+        self.assertTrue(isinstance(d.copy(), d.__class__))
         self.assertRaises(TypeError, d.copy, None)
 
     def test_get(self):
         BasicTestMappingProtocol.test_get(self)
         d = self._empty_mapping()
-        self.assert_(d.get('c') is None)
+        self.assertTrue(d.get('c') is None)
         self.assertEqual(d.get('c', 3), 3)
         d = self._full_mapping({'a' : 1, 'b' : 2})
-        self.assert_(d.get('c') is None)
+        self.assertTrue(d.get('c') is None)
         self.assertEqual(d.get('c', 3), 3)
         self.assertEqual(d.get('a'), 1)
         self.assertEqual(d.get('a', 3), 1)
@@ -489,9 +489,9 @@
     def test_setdefault(self):
         BasicTestMappingProtocol.test_setdefault(self)
         d = self._empty_mapping()
-        self.assert_(d.setdefault('key0') is None)
+        self.assertTrue(d.setdefault('key0') is None)
         d.setdefault('key0', [])
-        self.assert_(d.setdefault('key0') is None)
+        self.assertTrue(d.setdefault('key0') is None)
         d.setdefault('key', []).append(3)
         self.assertEqual(d['key'][0], 3)
         d.setdefault('key', []).append(4)
@@ -517,9 +517,9 @@
                     self.assertEqual(va, int(ka))
                     kb, vb = tb = b.popitem()
                     self.assertEqual(vb, int(kb))
-                    self.assert_(not(copymode < 0 and ta != tb))
-                self.assert_(not a)
-                self.assert_(not b)
+                    self.assertTrue(not(copymode < 0 and ta != tb))
+                self.assertTrue(not a)
+                self.assertTrue(not b)
 
     def test_pop(self):
         BasicTestMappingProtocol.test_pop(self)
@@ -577,7 +577,7 @@
                 return collections.UserDict()
         ud = mydict.fromkeys('ab')
         self.assertEqual(ud, {'a':None, 'b':None})
-        self.assert_(isinstance(ud, collections.UserDict))
+        self.assertTrue(isinstance(ud, collections.UserDict))
 
     def test_pop(self):
         TestMappingProtocol.test_pop(self)
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 3ed26b8..19704ae 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -449,7 +449,7 @@
             s = self.dumps(l, proto)
             x = self.loads(s)
             self.assertEqual(len(x), 1)
-            self.assert_(x is x[0])
+            self.assertTrue(x is x[0])
 
     def test_recursive_tuple(self):
         t = ([],)
@@ -459,7 +459,7 @@
             x = self.loads(s)
             self.assertEqual(len(x), 1)
             self.assertEqual(len(x[0]), 1)
-            self.assert_(x is x[0][0])
+            self.assertTrue(x is x[0][0])
 
     def test_recursive_dict(self):
         d = {}
@@ -468,7 +468,7 @@
             s = self.dumps(d, proto)
             x = self.loads(s)
             self.assertEqual(list(x.keys()), [1])
-            self.assert_(x[1] is x)
+            self.assertTrue(x[1] is x)
 
     def test_recursive_inst(self):
         i = C()
@@ -477,7 +477,7 @@
             s = self.dumps(i, 2)
             x = self.loads(s)
             self.assertEqual(dir(x), dir(i))
-            self.assert_(x.attr is x)
+            self.assertTrue(x.attr is x)
 
     def test_recursive_multi(self):
         l = []
@@ -491,7 +491,7 @@
             self.assertEqual(len(x), 1)
             self.assertEqual(dir(x[0]), dir(i))
             self.assertEqual(list(x[0].attr.keys()), [1])
-            self.assert_(x[0].attr[1] is x)
+            self.assertTrue(x[0].attr[1] is x)
 
     def test_get(self):
         self.assertRaises(KeyError, self.loads, b'g0\np0')
@@ -639,7 +639,7 @@
         try:
             self.loads(badpickle)
         except ValueError as detail:
-            self.failUnless(str(detail).startswith(
+            self.assertTrue(str(detail).startswith(
                                             "unsupported pickle protocol"))
         else:
             self.fail("expected bad protocol number to raise ValueError")
@@ -720,7 +720,7 @@
             for x in None, False, True:
                 s = self.dumps(x, proto)
                 y = self.loads(s)
-                self.assert_(x is y, (proto, x, s, y))
+                self.assertTrue(x is y, (proto, x, s, y))
                 expected = expected_opcode[proto, x]
                 self.assertEqual(opcode_in_pickle(expected, s), True)
 
@@ -770,8 +770,8 @@
 
             # Dump using protocol 1 for comparison.
             s1 = self.dumps(x, 1)
-            self.assert_(__name__.encode("utf-8") in s1)
-            self.assert_(b"MyList" in s1)
+            self.assertTrue(__name__.encode("utf-8") in s1)
+            self.assertTrue(b"MyList" in s1)
             self.assertEqual(opcode_in_pickle(opcode, s1), False)
 
             y = self.loads(s1)
@@ -780,8 +780,8 @@
 
             # Dump using protocol 2 for test.
             s2 = self.dumps(x, 2)
-            self.assert_(__name__.encode("utf-8") not in s2)
-            self.assert_(b"MyList" not in s2)
+            self.assertTrue(__name__.encode("utf-8") not in s2)
+            self.assertTrue(b"MyList" not in s2)
             self.assertEqual(opcode_in_pickle(opcode, s2), True, repr(s2))
 
             y = self.loads(s2)
@@ -825,7 +825,7 @@
             if proto == 0:
                 self.assertEqual(num_appends, 0)
             else:
-                self.failUnless(num_appends >= 2)
+                self.assertTrue(num_appends >= 2)
 
     def test_dict_chunking(self):
         n = 10  # too small to chunk
@@ -848,7 +848,7 @@
             if proto == 0:
                 self.assertEqual(num_setitems, 0)
             else:
-                self.failUnless(num_setitems >= 2)
+                self.assertTrue(num_setitems >= 2)
 
     def test_simple_newobj(self):
         x = object.__new__(SimpleNewObj)  # avoid __init__
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index 4b56749..8ebe568 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -17,7 +17,7 @@
                 # Silent fail here seems the best route since some modules
                 # may not be available in all environments.
                 return
-        self.failUnless(hasattr(sys.modules[modname], "__all__"),
+        self.assertTrue(hasattr(sys.modules[modname], "__all__"),
                         "%s has no __all__ attribute" % modname)
         names = {}
         exec("from %s import *" % modname, names)
diff --git a/Lib/test/test___future__.py b/Lib/test/test___future__.py
index 9d98746..f41b879 100644
--- a/Lib/test/test___future__.py
+++ b/Lib/test/test___future__.py
@@ -15,7 +15,7 @@
         for name in dir(__future__):
             obj = getattr(__future__, name, None)
             if obj is not None and isinstance(obj, __future__._Feature):
-                self.assert_(
+                self.assertTrue(
                     name in given_feature_names,
                     "%r should have been in all_feature_names" % name
                 )
@@ -30,7 +30,7 @@
             optional = value.getOptionalRelease()
             mandatory = value.getMandatoryRelease()
 
-            a = self.assert_
+            a = self.assertTrue
             e = self.assertEqual
             def check(t, name):
                 a(isinstance(t, tuple), "%s isn't tuple" % name)
diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py
index 4965c42..c3482d6 100644
--- a/Lib/test/test_abc.py
+++ b/Lib/test/test_abc.py
@@ -42,23 +42,23 @@
                 def bar(self): pass  # concrete
             self.assertEqual(C.__abstractmethods__, {"foo"})
             self.assertRaises(TypeError, C)  # because foo is abstract
-            self.assert_(isabstract(C))
+            self.assertTrue(isabstract(C))
             class D(C):
                 def bar(self): pass  # concrete override of concrete
             self.assertEqual(D.__abstractmethods__, {"foo"})
             self.assertRaises(TypeError, D)  # because foo is still abstract
-            self.assert_(isabstract(D))
+            self.assertTrue(isabstract(D))
             class E(D):
                 def foo(self): pass
             self.assertEqual(E.__abstractmethods__, set())
             E()  # now foo is concrete, too
-            self.failIf(isabstract(E))
+            self.assertFalse(isabstract(E))
             class F(E):
                 @abstractthing
                 def bar(self): pass  # abstract override of concrete
             self.assertEqual(F.__abstractmethods__, {"bar"})
             self.assertRaises(TypeError, F)  # because bar is abstract now
-            self.assert_(isabstract(F))
+            self.assertTrue(isabstract(F))
 
     def test_subclass_oldstyle_class(self):
         class A:
@@ -142,41 +142,41 @@
     def test_registration_transitiveness(self):
         class A(metaclass=abc.ABCMeta):
             pass
-        self.failUnless(issubclass(A, A))
-        self.failUnless(issubclass(A, (A,)))
+        self.assertTrue(issubclass(A, A))
+        self.assertTrue(issubclass(A, (A,)))
         class B(metaclass=abc.ABCMeta):
             pass
-        self.failIf(issubclass(A, B))
-        self.failIf(issubclass(A, (B,)))
-        self.failIf(issubclass(B, A))
-        self.failIf(issubclass(B, (A,)))
+        self.assertFalse(issubclass(A, B))
+        self.assertFalse(issubclass(A, (B,)))
+        self.assertFalse(issubclass(B, A))
+        self.assertFalse(issubclass(B, (A,)))
         class C(metaclass=abc.ABCMeta):
             pass
         A.register(B)
         class B1(B):
             pass
-        self.failUnless(issubclass(B1, A))
-        self.failUnless(issubclass(B1, (A,)))
+        self.assertTrue(issubclass(B1, A))
+        self.assertTrue(issubclass(B1, (A,)))
         class C1(C):
             pass
         B1.register(C1)
-        self.failIf(issubclass(C, B))
-        self.failIf(issubclass(C, (B,)))
-        self.failIf(issubclass(C, B1))
-        self.failIf(issubclass(C, (B1,)))
-        self.failUnless(issubclass(C1, A))
-        self.failUnless(issubclass(C1, (A,)))
-        self.failUnless(issubclass(C1, B))
-        self.failUnless(issubclass(C1, (B,)))
-        self.failUnless(issubclass(C1, B1))
-        self.failUnless(issubclass(C1, (B1,)))
+        self.assertFalse(issubclass(C, B))
+        self.assertFalse(issubclass(C, (B,)))
+        self.assertFalse(issubclass(C, B1))
+        self.assertFalse(issubclass(C, (B1,)))
+        self.assertTrue(issubclass(C1, A))
+        self.assertTrue(issubclass(C1, (A,)))
+        self.assertTrue(issubclass(C1, B))
+        self.assertTrue(issubclass(C1, (B,)))
+        self.assertTrue(issubclass(C1, B1))
+        self.assertTrue(issubclass(C1, (B1,)))
         C1.register(int)
         class MyInt(int):
             pass
-        self.failUnless(issubclass(MyInt, A))
-        self.failUnless(issubclass(MyInt, (A,)))
-        self.failUnless(isinstance(42, A))
-        self.failUnless(isinstance(42, (A,)))
+        self.assertTrue(issubclass(MyInt, A))
+        self.assertTrue(issubclass(MyInt, (A,)))
+        self.assertTrue(isinstance(42, A))
+        self.assertTrue(isinstance(42, (A,)))
 
     def test_all_new_methods_are_called(self):
         class A(metaclass=abc.ABCMeta):
diff --git a/Lib/test/test_abstract_numbers.py b/Lib/test/test_abstract_numbers.py
index e20f2d4..d0164c0 100644
--- a/Lib/test/test_abstract_numbers.py
+++ b/Lib/test/test_abstract_numbers.py
@@ -9,8 +9,8 @@
 
 class TestNumbers(unittest.TestCase):
     def test_int(self):
-        self.failUnless(issubclass(int, Integral))
-        self.failUnless(issubclass(int, Complex))
+        self.assertTrue(issubclass(int, Integral))
+        self.assertTrue(issubclass(int, Complex))
 
         self.assertEqual(7, int(7).real)
         self.assertEqual(0, int(7).imag)
@@ -19,16 +19,16 @@
         self.assertEqual(1, int(7).denominator)
 
     def test_float(self):
-        self.failIf(issubclass(float, Rational))
-        self.failUnless(issubclass(float, Real))
+        self.assertFalse(issubclass(float, Rational))
+        self.assertTrue(issubclass(float, Real))
 
         self.assertEqual(7.3, float(7.3).real)
         self.assertEqual(0, float(7.3).imag)
         self.assertEqual(7.3, float(7.3).conjugate())
 
     def test_complex(self):
-        self.failIf(issubclass(complex, Real))
-        self.failUnless(issubclass(complex, Complex))
+        self.assertFalse(issubclass(complex, Real))
+        self.assertTrue(issubclass(complex, Complex))
 
         c1, c2 = complex(3, 2), complex(4,1)
         # XXX: This is not ideal, but see the comment in math_trunc().
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index 8e22839..7ae34a9 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -49,7 +49,7 @@
     def test_constructor(self):
         a = array.array(self.typecode)
         self.assertEqual(a.typecode, self.typecode)
-        self.assert_(a.itemsize>=self.minitemsize)
+        self.assertTrue(a.itemsize>=self.minitemsize)
         self.assertRaises(TypeError, array.array, self.typecode, None)
 
     def test_len(self):
@@ -64,10 +64,10 @@
         a = array.array(self.typecode, self.example)
         self.assertRaises(TypeError, a.buffer_info, 42)
         bi = a.buffer_info()
-        self.assert_(isinstance(bi, tuple))
+        self.assertTrue(isinstance(bi, tuple))
         self.assertEqual(len(bi), 2)
-        self.assert_(isinstance(bi[0], int))
-        self.assert_(isinstance(bi[1], int))
+        self.assertTrue(isinstance(bi[0], int))
+        self.assertTrue(isinstance(bi[1], int))
         self.assertEqual(bi[1], len(a))
 
     def test_byteswap(self):
@@ -216,39 +216,39 @@
 
     def test_cmp(self):
         a = array.array(self.typecode, self.example)
-        self.assert_((a == 42) is False)
-        self.assert_((a != 42) is True)
+        self.assertTrue((a == 42) is False)
+        self.assertTrue((a != 42) is True)
 
-        self.assert_((a == a) is True)
-        self.assert_((a != a) is False)
-        self.assert_((a < a) is False)
-        self.assert_((a <= a) is True)
-        self.assert_((a > a) is False)
-        self.assert_((a >= a) is True)
+        self.assertTrue((a == a) is True)
+        self.assertTrue((a != a) is False)
+        self.assertTrue((a < a) is False)
+        self.assertTrue((a <= a) is True)
+        self.assertTrue((a > a) is False)
+        self.assertTrue((a >= a) is True)
 
         al = array.array(self.typecode, self.smallerexample)
         ab = array.array(self.typecode, self.biggerexample)
 
-        self.assert_((a == 2*a) is False)
-        self.assert_((a != 2*a) is True)
-        self.assert_((a < 2*a) is True)
-        self.assert_((a <= 2*a) is True)
-        self.assert_((a > 2*a) is False)
-        self.assert_((a >= 2*a) is False)
+        self.assertTrue((a == 2*a) is False)
+        self.assertTrue((a != 2*a) is True)
+        self.assertTrue((a < 2*a) is True)
+        self.assertTrue((a <= 2*a) is True)
+        self.assertTrue((a > 2*a) is False)
+        self.assertTrue((a >= 2*a) is False)
 
-        self.assert_((a == al) is False)
-        self.assert_((a != al) is True)
-        self.assert_((a < al) is False)
-        self.assert_((a <= al) is False)
-        self.assert_((a > al) is True)
-        self.assert_((a >= al) is True)
+        self.assertTrue((a == al) is False)
+        self.assertTrue((a != al) is True)
+        self.assertTrue((a < al) is False)
+        self.assertTrue((a <= al) is False)
+        self.assertTrue((a > al) is True)
+        self.assertTrue((a >= al) is True)
 
-        self.assert_((a == ab) is False)
-        self.assert_((a != ab) is True)
-        self.assert_((a < ab) is True)
-        self.assert_((a <= ab) is True)
-        self.assert_((a > ab) is False)
-        self.assert_((a >= ab) is False)
+        self.assertTrue((a == ab) is False)
+        self.assertTrue((a != ab) is True)
+        self.assertTrue((a < ab) is True)
+        self.assertTrue((a <= ab) is True)
+        self.assertTrue((a > ab) is False)
+        self.assertTrue((a >= ab) is False)
 
     def test_add(self):
         a = array.array(self.typecode, self.example) \
@@ -267,7 +267,7 @@
         a = array.array(self.typecode, self.example[::-1])
         b = a
         a += array.array(self.typecode, 2*self.example)
-        self.assert_(a is b)
+        self.assertTrue(a is b)
         self.assertEqual(
             a,
             array.array(self.typecode, self.example[::-1]+2*self.example)
@@ -310,22 +310,22 @@
         b = a
 
         a *= 5
-        self.assert_(a is b)
+        self.assertTrue(a is b)
         self.assertEqual(
             a,
             array.array(self.typecode, 5*self.example)
         )
 
         a *= 0
-        self.assert_(a is b)
+        self.assertTrue(a is b)
         self.assertEqual(a, array.array(self.typecode))
 
         a *= 1000
-        self.assert_(a is b)
+        self.assertTrue(a is b)
         self.assertEqual(a, array.array(self.typecode))
 
         a *= -1
-        self.assert_(a is b)
+        self.assertTrue(a is b)
         self.assertEqual(a, array.array(self.typecode))
 
         a = array.array(self.typecode, self.example)
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 54a3b35..c22d0d4 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -116,20 +116,20 @@
 
 class AST_Tests(unittest.TestCase):
 
-    def _assert_order(self, ast_node, parent_pos):
+    def _assertTrueorder(self, ast_node, parent_pos):
         if not isinstance(ast_node, ast.AST) or ast_node._fields is None:
             return
         if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)):
             node_pos = (ast_node.lineno, ast_node.col_offset)
-            self.assert_(node_pos >= parent_pos)
+            self.assertTrue(node_pos >= parent_pos)
             parent_pos = (ast_node.lineno, ast_node.col_offset)
         for name in ast_node._fields:
             value = getattr(ast_node, name)
             if isinstance(value, list):
                 for child in value:
-                    self._assert_order(child, parent_pos)
+                    self._assertTrueorder(child, parent_pos)
             elif value is not None:
-                self._assert_order(value, parent_pos)
+                self._assertTrueorder(value, parent_pos)
 
     def test_snippets(self):
         for input, output, kind in ((exec_tests, exec_results, "exec"),
@@ -138,7 +138,7 @@
             for i, o in zip(input, output):
                 ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST)
                 self.assertEquals(to_tuple(ast_tree), o)
-                self._assert_order(ast_tree, (0, 0))
+                self._assertTrueorder(ast_tree, (0, 0))
 
     def test_nodeclasses(self):
         x = ast.BinOp(1, 2, 3, lineno=0)
diff --git a/Lib/test/test_augassign.py b/Lib/test/test_augassign.py
index e03b4d4..8567821 100644
--- a/Lib/test/test_augassign.py
+++ b/Lib/test/test_augassign.py
@@ -60,7 +60,7 @@
         y[1:2] += [1]
 
         self.assertEquals(x, [1, 2, 1, 2, 3])
-        self.assert_(x is y)
+        self.assertTrue(x is y)
 
     def testCustomMethods1(self):
 
@@ -85,23 +85,23 @@
         y = x
         x += 10
 
-        self.assert_(isinstance(x, aug_test))
-        self.assert_(y is not x)
+        self.assertTrue(isinstance(x, aug_test))
+        self.assertTrue(y is not x)
         self.assertEquals(x.val, 11)
 
         x = aug_test2(2)
         y = x
         x += 10
 
-        self.assert_(y is x)
+        self.assertTrue(y is x)
         self.assertEquals(x.val, 12)
 
         x = aug_test3(3)
         y = x
         x += 10
 
-        self.assert_(isinstance(x, aug_test3))
-        self.assert_(y is not x)
+        self.assertTrue(isinstance(x, aug_test3))
+        self.assertTrue(y is not x)
         self.assertEquals(x.val, 13)
 
 
diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py
index 149ac8a..fadee6d 100644
--- a/Lib/test/test_base64.py
+++ b/Lib/test/test_base64.py
@@ -204,7 +204,7 @@
         self.assertRaises(TypeError, base64.b16decode, "")
 
     def test_ErrorHeritage(self):
-        self.assert_(issubclass(binascii.Error, ValueError))
+        self.assertTrue(issubclass(binascii.Error, ValueError))
 
 
 
diff --git a/Lib/test/test_bigmem.py b/Lib/test/test_bigmem.py
index 091893e..030ada5 100644
--- a/Lib/test/test_bigmem.py
+++ b/Lib/test/test_bigmem.py
@@ -80,12 +80,12 @@
         _ = self.from_latin1
         SUBSTR = _(' abc def ghi')
         s = _('-') * size + SUBSTR
-        self.failUnless(s.endswith(SUBSTR))
-        self.failUnless(s.endswith(s))
+        self.assertTrue(s.endswith(SUBSTR))
+        self.assertTrue(s.endswith(s))
         s2 = _('...') + s
-        self.failUnless(s2.endswith(s))
-        self.failIf(s.endswith(_('a') + SUBSTR))
-        self.failIf(SUBSTR.endswith(s))
+        self.assertTrue(s2.endswith(s))
+        self.assertFalse(s.endswith(_('a') + SUBSTR))
+        self.assertFalse(SUBSTR.endswith(s))
 
     @bigmemtest(minsize=_2G + 10, memuse=2)
     def test_expandtabs(self, size):
@@ -139,27 +139,27 @@
         _ = self.from_latin1
         SUBSTR = _('123456')
         s = _('a') * size + SUBSTR
-        self.failUnless(s.isalnum())
+        self.assertTrue(s.isalnum())
         s += _('.')
-        self.failIf(s.isalnum())
+        self.assertFalse(s.isalnum())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_isalpha(self, size):
         _ = self.from_latin1
         SUBSTR = _('zzzzzzz')
         s = _('a') * size + SUBSTR
-        self.failUnless(s.isalpha())
+        self.assertTrue(s.isalpha())
         s += _('.')
-        self.failIf(s.isalpha())
+        self.assertFalse(s.isalpha())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_isdigit(self, size):
         _ = self.from_latin1
         SUBSTR = _('123456')
         s = _('9') * size + SUBSTR
-        self.failUnless(s.isdigit())
+        self.assertTrue(s.isdigit())
         s += _('z')
-        self.failIf(s.isdigit())
+        self.assertFalse(s.isdigit())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_islower(self, size):
@@ -168,9 +168,9 @@
             chr(c) for c in range(255) if not chr(c).isupper()))
         repeats = size // len(chars) + 2
         s = chars * repeats
-        self.failUnless(s.islower())
+        self.assertTrue(s.islower())
         s += _('A')
-        self.failIf(s.islower())
+        self.assertFalse(s.islower())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_isspace(self, size):
@@ -178,20 +178,20 @@
         whitespace = _(' \f\n\r\t\v')
         repeats = size // len(whitespace) + 2
         s = whitespace * repeats
-        self.failUnless(s.isspace())
+        self.assertTrue(s.isspace())
         s += _('j')
-        self.failIf(s.isspace())
+        self.assertFalse(s.isspace())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_istitle(self, size):
         _ = self.from_latin1
         SUBSTR = _('123456')
         s = _('').join([_('A'), _('a') * size, SUBSTR])
-        self.failUnless(s.istitle())
+        self.assertTrue(s.istitle())
         s += _('A')
-        self.failUnless(s.istitle())
+        self.assertTrue(s.istitle())
         s += _('aA')
-        self.failIf(s.istitle())
+        self.assertFalse(s.istitle())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_isupper(self, size):
@@ -200,9 +200,9 @@
             chr(c) for c in range(255) if not chr(c).islower()))
         repeats = size // len(chars) + 2
         s = chars * repeats
-        self.failUnless(s.isupper())
+        self.assertTrue(s.isupper())
         s += _('a')
-        self.failIf(s.isupper())
+        self.assertFalse(s.isupper())
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_join(self, size):
@@ -211,15 +211,15 @@
         x = s.join([_('aaaaa'), _('bbbbb')])
         self.assertEquals(x.count(_('a')), 5)
         self.assertEquals(x.count(_('b')), 5)
-        self.failUnless(x.startswith(_('aaaaaA')))
-        self.failUnless(x.endswith(_('Abbbbb')))
+        self.assertTrue(x.startswith(_('aaaaaA')))
+        self.assertTrue(x.endswith(_('Abbbbb')))
 
     @bigmemtest(minsize=_2G + 10, memuse=1)
     def test_ljust(self, size):
         _ = self.from_latin1
         SUBSTR = _(' abc def ghi')
         s = SUBSTR.ljust(size)
-        self.failUnless(s.startswith(SUBSTR + _('  ')))
+        self.assertTrue(s.startswith(SUBSTR + _('  ')))
         self.assertEquals(len(s), size)
         self.assertEquals(s.strip(), SUBSTR.strip())
 
@@ -244,7 +244,7 @@
         # Type-specific optimization
         if isinstance(s, (str, bytes)):
             stripped = s.lstrip()
-            self.failUnless(stripped is s)
+            self.assertTrue(stripped is s)
 
     @bigmemtest(minsize=_2G + 10, memuse=2)
     def test_replace(self, size):
@@ -299,7 +299,7 @@
         _ = self.from_latin1
         SUBSTR = _(' abc def ghi')
         s = SUBSTR.ljust(size)
-        self.failUnless(s.startswith(SUBSTR + _('  ')))
+        self.assertTrue(s.startswith(SUBSTR + _('  ')))
         self.assertEquals(len(s), size)
         self.assertEquals(s.strip(), SUBSTR.strip())
 
@@ -316,7 +316,7 @@
         # Type-specific optimization
         if isinstance(s, (str, bytes)):
             stripped = s.rstrip()
-            self.failUnless(stripped is s)
+            self.assertTrue(stripped is s)
 
     # The test takes about size bytes to build a string, and then about
     # sqrt(size) substrings of sqrt(size) in size and a list to
@@ -378,9 +378,9 @@
         _ = self.from_latin1
         SUBSTR = _(' abc def ghi')
         s = _('-') * size + SUBSTR
-        self.failUnless(s.startswith(s))
-        self.failUnless(s.startswith(_('-') * size))
-        self.failIf(s.startswith(SUBSTR))
+        self.assertTrue(s.startswith(s))
+        self.assertTrue(s.startswith(_('-') * size))
+        self.assertFalse(s.startswith(SUBSTR))
 
     @bigmemtest(minsize=_2G, memuse=1)
     def test_strip(self, size):
@@ -412,8 +412,8 @@
         SUBSTR = _('SpaaHAaaAaham')
         s = SUBSTR * (size // len(SUBSTR) + 2)
         s = s.title()
-        self.failUnless(s.startswith((SUBSTR * 3).title()))
-        self.failUnless(s.endswith(SUBSTR.lower() * 3))
+        self.assertTrue(s.startswith((SUBSTR * 3).title()))
+        self.assertTrue(s.endswith(SUBSTR.lower() * 3))
 
     @bigmemtest(minsize=_2G, memuse=2)
     def test_translate(self, size):
@@ -451,8 +451,8 @@
         _ = self.from_latin1
         SUBSTR = _('-568324723598234')
         s = SUBSTR.zfill(size)
-        self.failUnless(s.endswith(_('0') + SUBSTR[1:]))
-        self.failUnless(s.startswith(_('-0')))
+        self.assertTrue(s.endswith(_('0') + SUBSTR[1:]))
+        self.assertTrue(s.startswith(_('-0')))
         self.assertEquals(len(s), size)
         self.assertEquals(s.count(_('0')), size - len(SUBSTR))
 
@@ -519,12 +519,12 @@
         edge = _('-') * (size // 2)
         s = _('').join([edge, SUBSTR, edge])
         del edge
-        self.failUnless(SUBSTR in s)
-        self.failIf(SUBSTR * 2 in s)
-        self.failUnless(_('-') in s)
-        self.failIf(_('a') in s)
+        self.assertTrue(SUBSTR in s)
+        self.assertFalse(SUBSTR * 2 in s)
+        self.assertTrue(_('-') in s)
+        self.assertFalse(_('a') in s)
         s += _('a')
-        self.failUnless(_('a') in s)
+        self.assertTrue(_('a') in s)
 
     @bigmemtest(minsize=_2G + 10, memuse=2)
     def test_compare(self, size):
@@ -534,10 +534,10 @@
         self.assertEqual(s1, s2)
         del s2
         s2 = s1 + _('a')
-        self.failIf(s1 == s2)
+        self.assertFalse(s1 == s2)
         del s2
         s2 = _('.') * size
-        self.failIf(s1 == s2)
+        self.assertFalse(s1 == s2)
 
     @bigmemtest(minsize=_2G + 10, memuse=1)
     def test_hash(self, size):
@@ -552,7 +552,7 @@
         h1 = hash(s)
         del s
         s = _('\x00') * (size + 1)
-        self.failIf(h1 == hash(s))
+        self.assertFalse(h1 == hash(s))
 
 
 class StrTest(unittest.TestCase, BaseStrTest):
@@ -623,7 +623,7 @@
         except MemoryError:
             pass # acceptable on 32-bit
         else:
-            self.failUnless(s == eval(r))
+            self.assertTrue(s == eval(r))
 
     @bigmemtest(minsize=_2G + 10, memuse=character_size * 2)
     def test_format(self, size):
@@ -633,8 +633,8 @@
         del sf
         sf = '..%s..' % (s,)
         self.assertEquals(len(sf), len(s) + 4)
-        self.failUnless(sf.startswith('..-'))
-        self.failUnless(sf.endswith('-..'))
+        self.assertTrue(sf.startswith('..-'))
+        self.assertTrue(sf.endswith('-..'))
         del s, sf
 
         size //= 2
@@ -682,8 +682,8 @@
         s = "\uAAAA" * size
         for f in (repr, ascii):
             r = f(s)
-            self.failUnless(len(r) > size)
-            self.failUnless(r.endswith(r"\uaaaa'"), r[-10:])
+            self.assertTrue(len(r) > size)
+            self.assertTrue(r.endswith(r"\uaaaa'"), r[-10:])
             del r
 
     # The character takes 4 bytes even in UCS-2 builds because it will
@@ -693,8 +693,8 @@
         s = "\U0001AAAA" * size
         for f in (repr, ascii):
             r = f(s)
-            self.failUnless(len(r) > size)
-            self.failUnless(r.endswith(r"\U0001aaaa'"), r[-12:])
+            self.assertTrue(len(r) > size)
+            self.assertTrue(r.endswith(r"\U0001aaaa'"), r[-12:])
             del r
 
 
@@ -740,10 +740,10 @@
         self.assertEqual(t1, t2)
         del t2
         t2 = ('',) * (size + 1)
-        self.failIf(t1 == t2)
+        self.assertFalse(t1 == t2)
         del t2
         t2 = (1,) * size
-        self.failIf(t1 == t2)
+        self.assertFalse(t1 == t2)
 
     # Test concatenating into a single tuple of more than 2G in length,
     # and concatenating a tuple of more than 2G in length separately, so
@@ -768,9 +768,9 @@
     def test_contains(self, size):
         t = (1, 2, 3, 4, 5) * size
         self.assertEquals(len(t), size * 5)
-        self.failUnless(5 in t)
-        self.failIf((1, 2, 3, 4, 5) in t)
-        self.failIf(0 in t)
+        self.assertTrue(5 in t)
+        self.assertFalse((1, 2, 3, 4, 5) in t)
+        self.assertFalse(0 in t)
 
     @bigmemtest(minsize=_2G + 10, memuse=8)
     def test_hash(self, size):
@@ -778,7 +778,7 @@
         h1 = hash(t1)
         del t1
         t2 = (0,) * (size + 1)
-        self.failIf(h1 == hash(t2))
+        self.assertFalse(h1 == hash(t2))
 
     @bigmemtest(minsize=_2G + 10, memuse=8)
     def test_index_and_slice(self, size):
@@ -874,10 +874,10 @@
         self.assertEqual(l1, l2)
         del l2
         l2 = [''] * (size + 1)
-        self.failIf(l1 == l2)
+        self.assertFalse(l1 == l2)
         del l2
         l2 = [2] * size
-        self.failIf(l1 == l2)
+        self.assertFalse(l1 == l2)
 
     # Test concatenating into a single list of more than 2G in length,
     # and concatenating a list of more than 2G in length separately, so
@@ -902,8 +902,8 @@
         l = [sys.stdout] * size
         l += l
         self.assertEquals(len(l), size * 2)
-        self.failUnless(l[0] is l[-1])
-        self.failUnless(l[size - 1] is l[size + 1])
+        self.assertTrue(l[0] is l[-1])
+        self.assertTrue(l[size - 1] is l[size + 1])
 
     @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
     def test_inplace_concat_small(self, size):
@@ -917,14 +917,14 @@
     def test_contains(self, size):
         l = [1, 2, 3, 4, 5] * size
         self.assertEquals(len(l), size * 5)
-        self.failUnless(5 in l)
-        self.failIf([1, 2, 3, 4, 5] in l)
-        self.failIf(0 in l)
+        self.assertTrue(5 in l)
+        self.assertFalse([1, 2, 3, 4, 5] in l)
+        self.assertFalse(0 in l)
 
     @bigmemtest(minsize=_2G + 10, memuse=8)
     def test_hash(self, size):
         l = [0] * size
-        self.failUnlessRaises(TypeError, hash, l)
+        self.assertRaises(TypeError, hash, l)
 
     @bigmemtest(minsize=_2G + 10, memuse=8)
     def test_index_and_slice(self, size):
@@ -984,7 +984,7 @@
     # Like test_concat, split in two.
     def basic_test_repeat(self, size):
         l = [] * size
-        self.failIf(l)
+        self.assertFalse(l)
         l = [''] * size
         self.assertEquals(len(l), size)
         l = l * 2
@@ -1002,13 +1002,13 @@
         l = ['']
         l *= size
         self.assertEquals(len(l), size)
-        self.failUnless(l[0] is l[-1])
+        self.assertTrue(l[0] is l[-1])
         del l
 
         l = [''] * size
         l *= 2
         self.assertEquals(len(l), size * 2)
-        self.failUnless(l[size - 1] is l[-1])
+        self.assertTrue(l[size - 1] is l[-1])
 
     @bigmemtest(minsize=_2G // 2 + 2, memuse=16)
     def test_inplace_repeat_small(self, size):
@@ -1042,8 +1042,8 @@
         l = [object()] * size
         l.append(object())
         self.assertEquals(len(l), size+1)
-        self.failUnless(l[-3] is l[-2])
-        self.failIf(l[-2] is l[-1])
+        self.assertTrue(l[-3] is l[-2])
+        self.assertFalse(l[-2] is l[-1])
 
     @bigmemtest(minsize=_2G // 5 + 2, memuse=8 * 5)
     def test_count(self, size):
@@ -1055,8 +1055,8 @@
         l = [object] * size
         l.extend(l)
         self.assertEquals(len(l), size * 2)
-        self.failUnless(l[0] is l[-1])
-        self.failUnless(l[size - 1] is l[size + 1])
+        self.assertTrue(l[0] is l[-1])
+        self.assertTrue(l[size - 1] is l[size + 1])
 
     @bigmemtest(minsize=_2G // 2 + 2, memuse=16)
     def test_extend_small(self, size):
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py
index d4ab6bf..65de81b 100755
--- a/Lib/test/test_binascii.py
+++ b/Lib/test/test_binascii.py
@@ -14,8 +14,8 @@
 
     def test_exceptions(self):
         # Check module exceptions
-        self.assert_(issubclass(binascii.Error, Exception))
-        self.assert_(issubclass(binascii.Incomplete, Exception))
+        self.assertTrue(issubclass(binascii.Error, Exception))
+        self.assertTrue(issubclass(binascii.Incomplete, Exception))
 
     def test_functions(self):
         # Check presence of all functions
@@ -26,10 +26,10 @@
                 prefixes.extend(["crc_", "rlecode_", "rledecode_"])
             for prefix in prefixes:
                 name = prefix + suffix
-                self.assert_(hasattr(getattr(binascii, name), '__call__'))
+                self.assertTrue(hasattr(getattr(binascii, name), '__call__'))
                 self.assertRaises(TypeError, getattr(binascii, name))
         for name in ("hexlify", "unhexlify"):
-            self.assert_(hasattr(getattr(binascii, name), '__call__'))
+            self.assertTrue(hasattr(getattr(binascii, name), '__call__'))
             self.assertRaises(TypeError, getattr(binascii, name))
 
     def test_base64valid(self):
diff --git a/Lib/test/test_binop.py b/Lib/test/test_binop.py
index 0dc18dd..5d77f23 100644
--- a/Lib/test/test_binop.py
+++ b/Lib/test/test_binop.py
@@ -210,10 +210,10 @@
         self.assertEqual(gcd(-10, -2), -2)
         for i in range(1, 20):
             for j in range(1, 20):
-                self.assert_(gcd(i, j) > 0)
-                self.assert_(gcd(-i, j) < 0)
-                self.assert_(gcd(i, -j) > 0)
-                self.assert_(gcd(-i, -j) < 0)
+                self.assertTrue(gcd(i, j) > 0)
+                self.assertTrue(gcd(-i, j) < 0)
+                self.assertTrue(gcd(i, -j) > 0)
+                self.assertTrue(gcd(-i, -j) < 0)
 
     def test_constructor(self):
         a = Rat(10, 15)
diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py
index df2f8b1..93b8613 100644
--- a/Lib/test/test_bisect.py
+++ b/Lib/test/test_bisect.py
@@ -130,14 +130,14 @@
             elem = randrange(-1, n+1)
             ip = self.module.bisect_left(data, elem)
             if ip < len(data):
-                self.failUnless(elem <= data[ip])
+                self.assertTrue(elem <= data[ip])
             if ip > 0:
-                self.failUnless(data[ip-1] < elem)
+                self.assertTrue(data[ip-1] < elem)
             ip = self.module.bisect_right(data, elem)
             if ip < len(data):
-                self.failUnless(elem < data[ip])
+                self.assertTrue(elem < data[ip])
             if ip > 0:
-                self.failUnless(data[ip-1] <= elem)
+                self.assertTrue(data[ip-1] <= elem)
 
     def test_optionalSlicing(self):
         for func, data, elem, expected in self.precomputedCases:
@@ -146,15 +146,15 @@
                 for hi in range(3,8):
                     hi = min(len(data), hi)
                     ip = func(data, elem, lo, hi)
-                    self.failUnless(lo <= ip <= hi)
+                    self.assertTrue(lo <= ip <= hi)
                     if func is self.module.bisect_left and ip < hi:
-                        self.failUnless(elem <= data[ip])
+                        self.assertTrue(elem <= data[ip])
                     if func is self.module.bisect_left and ip > lo:
-                        self.failUnless(data[ip-1] < elem)
+                        self.assertTrue(data[ip-1] < elem)
                     if func is self.module.bisect_right and ip < hi:
-                        self.failUnless(elem < data[ip])
+                        self.assertTrue(elem < data[ip])
                     if func is self.module.bisect_right and ip > lo:
-                        self.failUnless(data[ip-1] <= elem)
+                        self.assertTrue(data[ip-1] <= elem)
                     self.assertEqual(ip, max(lo, min(hi, expected)))
 
     def test_backcompatibility(self):
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index 80229aa..3a68dfc 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -8,10 +8,10 @@
 class BoolTest(unittest.TestCase):
 
     def assertIs(self, a, b):
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
     def assertIsNot(self, a, b):
-        self.assert_(a is not b)
+        self.assertTrue(a is not b)
 
     def test_subclass(self):
         try:
@@ -221,15 +221,15 @@
 
     def test_boolean(self):
         self.assertEqual(True & 1, 1)
-        self.assert_(not isinstance(True & 1, bool))
+        self.assertTrue(not isinstance(True & 1, bool))
         self.assertIs(True & True, True)
 
         self.assertEqual(True | 1, 1)
-        self.assert_(not isinstance(True | 1, bool))
+        self.assertTrue(not isinstance(True | 1, bool))
         self.assertIs(True | True, True)
 
         self.assertEqual(True ^ 1, 0)
-        self.assert_(not isinstance(True ^ 1, bool))
+        self.assertTrue(not isinstance(True ^ 1, bool))
         self.assertIs(True ^ True, False)
 
     def test_fileclosed(self):
diff --git a/Lib/test/test_bufio.py b/Lib/test/test_bufio.py
index 7d617d3..5ab6f5a 100644
--- a/Lib/test/test_bufio.py
+++ b/Lib/test/test_bufio.py
@@ -34,7 +34,7 @@
             line = f.readline()
             self.assertEqual(line, s)
             line = f.readline()
-            self.assert_(not line) # Must be at EOF
+            self.assertTrue(not line) # Must be at EOF
             f.close()
         finally:
             support.unlink(support.TESTFN)
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 28af247..cac4555 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -176,24 +176,24 @@
 
     def test_neg(self):
         x = -sys.maxsize-1
-        self.assert_(isinstance(x, int))
+        self.assertTrue(isinstance(x, int))
         self.assertEqual(-x, sys.maxsize+1)
 
     # XXX(nnorwitz): This test case for callable should probably be removed.
     def test_callable(self):
-        self.assert_(hasattr(len, '__call__'))
+        self.assertTrue(hasattr(len, '__call__'))
         def f(): pass
-        self.assert_(hasattr(f, '__call__'))
+        self.assertTrue(hasattr(f, '__call__'))
         class C:
             def meth(self): pass
-        self.assert_(hasattr(C, '__call__'))
+        self.assertTrue(hasattr(C, '__call__'))
         x = C()
-        self.assert_(hasattr(x.meth, '__call__'))
-        self.assert_(not hasattr(x, '__call__'))
+        self.assertTrue(hasattr(x.meth, '__call__'))
+        self.assertTrue(not hasattr(x, '__call__'))
         class D(C):
             def __call__(self): pass
         y = D()
-        self.assert_(hasattr(y, '__call__'))
+        self.assertTrue(hasattr(y, '__call__'))
         y()
 
     def test_chr(self):
@@ -220,7 +220,7 @@
         self.assertRaises((OverflowError, ValueError), chr, 2**32)
 
     def test_cmp(self):
-        self.assert_(not hasattr(builtins, "cmp"))
+        self.assertTrue(not hasattr(builtins, "cmp"))
 
     def test_compile(self):
         compile('print(1)\n', '', 'exec')
@@ -252,11 +252,11 @@
 
         # dir() - local scope
         local_var = 1
-        self.assert_('local_var' in dir())
+        self.assertTrue('local_var' in dir())
 
         # dir(module)
         import sys
-        self.assert_('exit' in dir(sys))
+        self.assertTrue('exit' in dir(sys))
 
         # dir(module_with_invalid__dict__)
         import types
@@ -266,8 +266,8 @@
         self.assertRaises(TypeError, dir, f)
 
         # dir(type)
-        self.assert_("strip" in dir(str))
-        self.assert_("__mro__" not in dir(str))
+        self.assertTrue("strip" in dir(str))
+        self.assertTrue("__mro__" not in dir(str))
 
         # dir(obj)
         class Foo(object):
@@ -276,13 +276,13 @@
                 self.y = 8
                 self.z = 9
         f = Foo()
-        self.assert_("y" in dir(f))
+        self.assertTrue("y" in dir(f))
 
         # dir(obj_no__dict__)
         class Foo(object):
             __slots__ = []
         f = Foo()
-        self.assert_("__repr__" in dir(f))
+        self.assertTrue("__repr__" in dir(f))
 
         # dir(obj_no__class__with__dict__)
         # (an ugly trick to cause getattr(f, "__class__") to fail)
@@ -291,15 +291,15 @@
             def __init__(self):
                 self.bar = "wow"
         f = Foo()
-        self.assert_("__repr__" not in dir(f))
-        self.assert_("bar" in dir(f))
+        self.assertTrue("__repr__" not in dir(f))
+        self.assertTrue("bar" in dir(f))
 
         # dir(obj_using __dir__)
         class Foo(object):
             def __dir__(self):
                 return ["kan", "ga", "roo"]
         f = Foo()
-        self.assert_(dir(f) == ["ga", "kan", "roo"])
+        self.assertTrue(dir(f) == ["ga", "kan", "roo"])
 
         # dir(obj__dir__not_list)
         class Foo(object):
@@ -334,10 +334,10 @@
         self.assertEqual(divmod(-sys.maxsize-1, -1),
                          (sys.maxsize+1, 0))
 
-        self.assert_(not fcmp(divmod(3.25, 1.0), (3.0, 0.25)))
-        self.assert_(not fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)))
-        self.assert_(not fcmp(divmod(3.25, -1.0), (-4.0, -0.75)))
-        self.assert_(not fcmp(divmod(-3.25, -1.0), (3.0, -0.25)))
+        self.assertTrue(not fcmp(divmod(3.25, 1.0), (3.0, 0.25)))
+        self.assertTrue(not fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)))
+        self.assertTrue(not fcmp(divmod(3.25, -1.0), (-4.0, -0.75)))
+        self.assertTrue(not fcmp(divmod(-3.25, -1.0), (3.0, -0.25)))
 
         self.assertRaises(TypeError, divmod)
 
@@ -489,7 +489,7 @@
 
     def test_getattr(self):
         import sys
-        self.assert_(getattr(sys, 'stdout') is sys.stdout)
+        self.assertTrue(getattr(sys, 'stdout') is sys.stdout)
         self.assertRaises(TypeError, getattr, sys, 1)
         self.assertRaises(TypeError, getattr, sys, 1, "foo")
         self.assertRaises(TypeError, getattr)
@@ -497,7 +497,7 @@
 
     def test_hasattr(self):
         import sys
-        self.assert_(hasattr(sys, 'stdout'))
+        self.assertTrue(hasattr(sys, 'stdout'))
         self.assertRaises(TypeError, hasattr, sys, 1)
         self.assertRaises(TypeError, hasattr)
         self.assertEqual(False, hasattr(sys, chr(sys.maxunicode)))
@@ -575,11 +575,11 @@
         c = C()
         d = D()
         e = E()
-        self.assert_(isinstance(c, C))
-        self.assert_(isinstance(d, C))
-        self.assert_(not isinstance(e, C))
-        self.assert_(not isinstance(c, D))
-        self.assert_(not isinstance('foo', E))
+        self.assertTrue(isinstance(c, C))
+        self.assertTrue(isinstance(d, C))
+        self.assertTrue(not isinstance(e, C))
+        self.assertTrue(not isinstance(c, D))
+        self.assertTrue(not isinstance('foo', E))
         self.assertRaises(TypeError, isinstance, E, 'foo')
         self.assertRaises(TypeError, isinstance)
 
@@ -593,9 +593,9 @@
         c = C()
         d = D()
         e = E()
-        self.assert_(issubclass(D, C))
-        self.assert_(issubclass(C, C))
-        self.assert_(not issubclass(C, D))
+        self.assertTrue(issubclass(D, C))
+        self.assertTrue(issubclass(C, C))
+        self.assertTrue(not issubclass(C, D))
         self.assertRaises(TypeError, issubclass, 'foo', E)
         self.assertRaises(TypeError, issubclass, E, 'foo')
         self.assertRaises(TypeError, issubclass)
@@ -958,18 +958,18 @@
         self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2])
 
         seq = list(range(a, b, c))
-        self.assert_(a in seq)
-        self.assert_(b not in seq)
+        self.assertTrue(a in seq)
+        self.assertTrue(b not in seq)
         self.assertEqual(len(seq), 2)
 
         seq = list(range(b, a, -c))
-        self.assert_(b in seq)
-        self.assert_(a not in seq)
+        self.assertTrue(b in seq)
+        self.assertTrue(a not in seq)
         self.assertEqual(len(seq), 2)
 
         seq = list(range(-a, -b, -c))
-        self.assert_(-a in seq)
-        self.assert_(-b not in seq)
+        self.assertTrue(-a in seq)
+        self.assertTrue(-b not in seq)
         self.assertEqual(len(seq), 2)
 
         self.assertRaises(TypeError, range)
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
index 992f3d2..caea909 100644
--- a/Lib/test/test_bytes.py
+++ b/Lib/test/test_bytes.py
@@ -102,22 +102,22 @@
         b3 = self.type2test([1, 3])
 
         self.assertEqual(b1, b2)
-        self.failUnless(b2 != b3)
-        self.failUnless(b1 <= b2)
-        self.failUnless(b1 <= b3)
-        self.failUnless(b1 <  b3)
-        self.failUnless(b1 >= b2)
-        self.failUnless(b3 >= b2)
-        self.failUnless(b3 >  b2)
+        self.assertTrue(b2 != b3)
+        self.assertTrue(b1 <= b2)
+        self.assertTrue(b1 <= b3)
+        self.assertTrue(b1 <  b3)
+        self.assertTrue(b1 >= b2)
+        self.assertTrue(b3 >= b2)
+        self.assertTrue(b3 >  b2)
 
-        self.failIf(b1 != b2)
-        self.failIf(b2 == b3)
-        self.failIf(b1 >  b2)
-        self.failIf(b1 >  b3)
-        self.failIf(b1 >= b3)
-        self.failIf(b1 <  b2)
-        self.failIf(b3 <  b2)
-        self.failIf(b3 <= b2)
+        self.assertFalse(b1 != b2)
+        self.assertFalse(b2 == b3)
+        self.assertFalse(b1 >  b2)
+        self.assertFalse(b1 >  b3)
+        self.assertFalse(b1 >= b3)
+        self.assertFalse(b1 <  b2)
+        self.assertFalse(b3 <  b2)
+        self.assertFalse(b3 <= b2)
 
     def test_compare_to_str(self):
         warnings.simplefilter('ignore', BytesWarning)
@@ -220,27 +220,27 @@
 
     def test_contains(self):
         b = self.type2test(b"abc")
-        self.failUnless(ord('a') in b)
-        self.failUnless(int(ord('a')) in b)
-        self.failIf(200 in b)
-        self.failIf(200 in b)
+        self.assertTrue(ord('a') in b)
+        self.assertTrue(int(ord('a')) in b)
+        self.assertFalse(200 in b)
+        self.assertFalse(200 in b)
         self.assertRaises(ValueError, lambda: 300 in b)
         self.assertRaises(ValueError, lambda: -1 in b)
         self.assertRaises(TypeError, lambda: None in b)
         self.assertRaises(TypeError, lambda: float(ord('a')) in b)
         self.assertRaises(TypeError, lambda: "a" in b)
         for f in bytes, bytearray:
-            self.failUnless(f(b"") in b)
-            self.failUnless(f(b"a") in b)
-            self.failUnless(f(b"b") in b)
-            self.failUnless(f(b"c") in b)
-            self.failUnless(f(b"ab") in b)
-            self.failUnless(f(b"bc") in b)
-            self.failUnless(f(b"abc") in b)
-            self.failIf(f(b"ac") in b)
-            self.failIf(f(b"d") in b)
-            self.failIf(f(b"dab") in b)
-            self.failIf(f(b"abd") in b)
+            self.assertTrue(f(b"") in b)
+            self.assertTrue(f(b"a") in b)
+            self.assertTrue(f(b"b") in b)
+            self.assertTrue(f(b"c") in b)
+            self.assertTrue(f(b"ab") in b)
+            self.assertTrue(f(b"bc") in b)
+            self.assertTrue(f(b"abc") in b)
+            self.assertFalse(f(b"ac") in b)
+            self.assertFalse(f(b"d") in b)
+            self.assertFalse(f(b"dab") in b)
+            self.assertFalse(f(b"abd") in b)
 
     def test_fromhex(self):
         self.assertRaises(TypeError, self.type2test.fromhex)
@@ -626,7 +626,7 @@
         b += b"def"
         self.assertEqual(b, b"abcdef")
         self.assertEqual(b, b1)
-        self.failUnless(b is b1)
+        self.assertTrue(b is b1)
         b += b"xyz"
         self.assertEqual(b, b"abcdefxyz")
         try:
@@ -642,7 +642,7 @@
         b *= 3
         self.assertEqual(b, b"abcabcabc")
         self.assertEqual(b, b1)
-        self.failUnless(b is b1)
+        self.assertTrue(b is b1)
 
     def test_irepeat_1char(self):
         b = bytearray(b"x")
@@ -650,17 +650,17 @@
         b *= 100
         self.assertEqual(b, b"x"*100)
         self.assertEqual(b, b1)
-        self.failUnless(b is b1)
+        self.assertTrue(b is b1)
 
     def test_alloc(self):
         b = bytearray()
         alloc = b.__alloc__()
-        self.assert_(alloc >= 0)
+        self.assertTrue(alloc >= 0)
         seq = [alloc]
         for i in range(100):
             b += b"x"
             alloc = b.__alloc__()
-            self.assert_(alloc >= len(b))
+            self.assertTrue(alloc >= len(b))
             if alloc not in seq:
                 seq.append(alloc)
 
@@ -759,7 +759,7 @@
         a, b, c = bytearray(b"x").partition(b"y")
         self.assertEqual(b, b"")
         self.assertEqual(c, b"")
-        self.assert_(b is not c)
+        self.assertTrue(b is not c)
         b += b"!"
         self.assertEqual(c, b"")
         a, b, c = bytearray(b"x").partition(b"y")
@@ -769,7 +769,7 @@
         b, c, a = bytearray(b"x").rpartition(b"y")
         self.assertEqual(b, b"")
         self.assertEqual(c, b"")
-        self.assert_(b is not c)
+        self.assertTrue(b is not c)
         b += b"!"
         self.assertEqual(c, b"")
         c, b, a = bytearray(b"x").rpartition(b"y")
@@ -860,10 +860,10 @@
         self.assertEqual(bytes(b"abc") <= b"ab", False)
 
     def test_doc(self):
-        self.failUnless(bytearray.__doc__ != None)
-        self.failUnless(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
-        self.failUnless(bytes.__doc__ != None)
-        self.failUnless(bytes.__doc__.startswith("bytes("), bytes.__doc__)
+        self.assertTrue(bytearray.__doc__ != None)
+        self.assertTrue(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
+        self.assertTrue(bytes.__doc__ != None)
+        self.assertTrue(bytes.__doc__.startswith("bytes("), bytes.__doc__)
 
     def test_from_bytearray(self):
         sample = bytes(b"Hello world\n\x80\x81\xfe\xff")
@@ -920,7 +920,7 @@
     def test_return_self(self):
         # bytearray.replace must always return a new bytearray
         b = bytearray()
-        self.failIf(b.replace(b'', b'') is b)
+        self.assertFalse(b.replace(b'', b'') is b)
 
     def test_compare(self):
         if sys.flags.bytes_warning:
@@ -997,20 +997,20 @@
 class ByteArraySubclassTest(unittest.TestCase):
 
     def test_basic(self):
-        self.assert_(issubclass(ByteArraySubclass, bytearray))
-        self.assert_(isinstance(ByteArraySubclass(), bytearray))
+        self.assertTrue(issubclass(ByteArraySubclass, bytearray))
+        self.assertTrue(isinstance(ByteArraySubclass(), bytearray))
 
         a, b = b"abcd", b"efgh"
         _a, _b = ByteArraySubclass(a), ByteArraySubclass(b)
 
         # test comparison operators with subclass instances
-        self.assert_(_a == _a)
-        self.assert_(_a != _b)
-        self.assert_(_a < _b)
-        self.assert_(_a <= _b)
-        self.assert_(_b >= _a)
-        self.assert_(_b > _a)
-        self.assert_(_a is not a)
+        self.assertTrue(_a == _a)
+        self.assertTrue(_a != _b)
+        self.assertTrue(_a < _b)
+        self.assertTrue(_a <= _b)
+        self.assertTrue(_b >= _a)
+        self.assertTrue(_b > _a)
+        self.assertTrue(_a is not a)
 
         # test concat of subclass instances
         self.assertEqual(a + b, _a + _b)
@@ -1018,7 +1018,7 @@
         self.assertEqual(a + b, _a + b)
 
         # test repeat
-        self.assert_(a*5 == _a*5)
+        self.assertTrue(a*5 == _a*5)
 
     def test_join(self):
         # Make sure join returns a NEW object for single item sequences
@@ -1026,12 +1026,12 @@
         # Make sure that it is of the appropriate type.
         s1 = ByteArraySubclass(b"abcd")
         s2 = bytearray().join([s1])
-        self.assert_(s1 is not s2)
-        self.assert_(type(s2) is bytearray, type(s2))
+        self.assertTrue(s1 is not s2)
+        self.assertTrue(type(s2) is bytearray, type(s2))
 
         # Test reverse, calling join on subclass
         s3 = s1.join([b"abcd"])
-        self.assert_(type(s3) is bytearray)
+        self.assertTrue(type(s3) is bytearray)
 
     def test_pickle(self):
         a = ByteArraySubclass(b"abcd")
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index d3d2226..0460679 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -24,7 +24,7 @@
     def test_instancemethod(self):
         inst = InstanceMethod()
         self.assertEqual(id(inst), inst.id())
-        self.assert_(inst.testfunction() is inst)
+        self.assertTrue(inst.testfunction() is inst)
         self.assertEqual(inst.testfunction.__doc__, testfunction.__doc__)
         self.assertEqual(InstanceMethod.testfunction.__doc__, testfunction.__doc__)
 
@@ -64,7 +64,7 @@
             if context and not context.event.is_set():
                 continue
             count += 1
-            self.failUnless(count < 10000,
+            self.assertTrue(count < 10000,
                 "timeout waiting for %i callbacks, got %i"%(n, len(l)))
         if False and support.verbose:
             print("(%i)"%(len(l),))
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 12fd00c..a3d2640 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -76,16 +76,16 @@
         eq(cf.get('Spaces', 'key with spaces'), 'value')
         eq(cf.get('Spaces', 'another with spaces'), 'splat!')
 
-        self.failIf('__name__' in cf.options("Foo Bar"),
+        self.assertFalse('__name__' in cf.options("Foo Bar"),
                     '__name__ "option" should not be exposed by the API!')
 
         # Make sure the right things happen for remove_option();
         # added to include check for SourceForge bug #123324:
-        self.failUnless(cf.remove_option('Foo Bar', 'foo'),
+        self.assertTrue(cf.remove_option('Foo Bar', 'foo'),
                         "remove_option() failed to report existence of option")
-        self.failIf(cf.has_option('Foo Bar', 'foo'),
+        self.assertFalse(cf.has_option('Foo Bar', 'foo'),
                     "remove_option() failed to remove option")
-        self.failIf(cf.remove_option('Foo Bar', 'foo'),
+        self.assertFalse(cf.remove_option('Foo Bar', 'foo'),
                     "remove_option() failed to report non-existence of option"
                     " that was removed")
 
@@ -107,10 +107,10 @@
         eq(cf.options("a"), ["b"])
         eq(cf.get("a", "b"), "value",
            "could not locate option, expecting case-insensitive option names")
-        self.failUnless(cf.has_option("a", "b"))
+        self.assertTrue(cf.has_option("a", "b"))
         cf.set("A", "A-B", "A-B value")
         for opt in ("a-b", "A-b", "a-B", "A-B"):
-            self.failUnless(
+            self.assertTrue(
                 cf.has_option("A", opt),
                 "has_option() returned false for option which should exist")
         eq(cf.options("A"), ["a-b"])
@@ -127,7 +127,7 @@
         # SF bug #561822:
         cf = self.fromstring("[section]\nnekey=nevalue\n",
                              defaults={"key":"value"})
-        self.failUnless(cf.has_option("section", "Key"))
+        self.assertTrue(cf.has_option("section", "Key"))
 
 
     def test_default_case_sensitivity(self):
@@ -163,7 +163,7 @@
         cf = self.newconfig()
         self.assertEqual(cf.sections(), [],
                          "new ConfigParser should have no defined sections")
-        self.failIf(cf.has_section("Foo"),
+        self.assertFalse(cf.has_section("Foo"),
                     "new ConfigParser should have no acknowledged sections")
         self.assertRaises(configparser.NoSectionError,
                           cf.options, "Foo")
@@ -202,8 +202,8 @@
             "E5=FALSE AND MORE"
             )
         for x in range(1, 5):
-            self.failUnless(cf.getboolean('BOOLTEST', 't%d' % x))
-            self.failIf(cf.getboolean('BOOLTEST', 'f%d' % x))
+            self.assertTrue(cf.getboolean('BOOLTEST', 't%d' % x))
+            self.assertFalse(cf.getboolean('BOOLTEST', 'f%d' % x))
             self.assertRaises(ValueError,
                               cf.getboolean, 'BOOLTEST', 'e%d' % x)
 
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
index 87028b5..ef7dfa5 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -143,7 +143,7 @@
                 # test individual fields
                 for key in expect.keys():
                     expect_val = expect[key]
-                    self.assert_(key in fs)
+                    self.assertTrue(key in fs)
                     if len(expect_val) > 1:
                         self.assertEqual(fs.getvalue(key), expect_val)
                     else:
@@ -194,7 +194,7 @@
         # if we're not chunking properly, readline is only called twice
         # (by read_binary); if we are chunking properly, it will be called 5 times
         # as long as the chunksize is 1 << 16.
-        self.assert_(f.numcalls > 2)
+        self.assertTrue(f.numcalls > 2)
 
     def test_fieldstorage_multipart(self):
         #Test basic FieldStorage multipart parsing
diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py
index 17cb566..2d2deff 100755
--- a/Lib/test/test_cmath.py
+++ b/Lib/test/test_cmath.py
@@ -412,7 +412,7 @@
 
         # real or imaginary part NaN
         for z in complex_nans:
-            self.assert_(math.isnan(phase(z)))
+            self.assertTrue(math.isnan(phase(z)))
 
     def test_abs(self):
         # zeros
@@ -425,18 +425,18 @@
 
         # real or imaginary part NaN
         self.assertEqual(abs(complex(NAN, -INF)), INF)
-        self.assert_(math.isnan(abs(complex(NAN, -2.3))))
-        self.assert_(math.isnan(abs(complex(NAN, -0.0))))
-        self.assert_(math.isnan(abs(complex(NAN, 0.0))))
-        self.assert_(math.isnan(abs(complex(NAN, 2.3))))
+        self.assertTrue(math.isnan(abs(complex(NAN, -2.3))))
+        self.assertTrue(math.isnan(abs(complex(NAN, -0.0))))
+        self.assertTrue(math.isnan(abs(complex(NAN, 0.0))))
+        self.assertTrue(math.isnan(abs(complex(NAN, 2.3))))
         self.assertEqual(abs(complex(NAN, INF)), INF)
         self.assertEqual(abs(complex(-INF, NAN)), INF)
-        self.assert_(math.isnan(abs(complex(-2.3, NAN))))
-        self.assert_(math.isnan(abs(complex(-0.0, NAN))))
-        self.assert_(math.isnan(abs(complex(0.0, NAN))))
-        self.assert_(math.isnan(abs(complex(2.3, NAN))))
+        self.assertTrue(math.isnan(abs(complex(-2.3, NAN))))
+        self.assertTrue(math.isnan(abs(complex(-0.0, NAN))))
+        self.assertTrue(math.isnan(abs(complex(0.0, NAN))))
+        self.assertTrue(math.isnan(abs(complex(2.3, NAN))))
         self.assertEqual(abs(complex(INF, NAN)), INF)
-        self.assert_(math.isnan(abs(complex(NAN, NAN))))
+        self.assertTrue(math.isnan(abs(complex(NAN, NAN))))
 
         # result overflows
         if float.__getformat__("double").startswith("IEEE"):
@@ -455,26 +455,26 @@
         self.assertCEqual(rect(1, -pi/2), (0, -1.))
 
     def test_isnan(self):
-        self.failIf(cmath.isnan(1))
-        self.failIf(cmath.isnan(1j))
-        self.failIf(cmath.isnan(INF))
-        self.assert_(cmath.isnan(NAN))
-        self.assert_(cmath.isnan(complex(NAN, 0)))
-        self.assert_(cmath.isnan(complex(0, NAN)))
-        self.assert_(cmath.isnan(complex(NAN, NAN)))
-        self.assert_(cmath.isnan(complex(NAN, INF)))
-        self.assert_(cmath.isnan(complex(INF, NAN)))
+        self.assertFalse(cmath.isnan(1))
+        self.assertFalse(cmath.isnan(1j))
+        self.assertFalse(cmath.isnan(INF))
+        self.assertTrue(cmath.isnan(NAN))
+        self.assertTrue(cmath.isnan(complex(NAN, 0)))
+        self.assertTrue(cmath.isnan(complex(0, NAN)))
+        self.assertTrue(cmath.isnan(complex(NAN, NAN)))
+        self.assertTrue(cmath.isnan(complex(NAN, INF)))
+        self.assertTrue(cmath.isnan(complex(INF, NAN)))
 
     def test_isinf(self):
-        self.failIf(cmath.isinf(1))
-        self.failIf(cmath.isinf(1j))
-        self.failIf(cmath.isinf(NAN))
-        self.assert_(cmath.isinf(INF))
-        self.assert_(cmath.isinf(complex(INF, 0)))
-        self.assert_(cmath.isinf(complex(0, INF)))
-        self.assert_(cmath.isinf(complex(INF, INF)))
-        self.assert_(cmath.isinf(complex(NAN, INF)))
-        self.assert_(cmath.isinf(complex(INF, NAN)))
+        self.assertFalse(cmath.isinf(1))
+        self.assertFalse(cmath.isinf(1j))
+        self.assertFalse(cmath.isinf(NAN))
+        self.assertTrue(cmath.isinf(INF))
+        self.assertTrue(cmath.isinf(complex(INF, 0)))
+        self.assertTrue(cmath.isinf(complex(0, INF)))
+        self.assertTrue(cmath.isinf(complex(INF, INF)))
+        self.assertTrue(cmath.isinf(complex(NAN, INF)))
+        self.assertTrue(cmath.isinf(complex(INF, NAN)))
 
 
 def test_main():
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index ef3c109..87ae2b6 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -169,7 +169,7 @@
         p.stdin.flush()
         data, rc = _kill_python_and_exit_code(p)
         self.assertEqual(rc, 0)
-        self.assert_(data.startswith(b'x'), data)
+        self.assertTrue(data.startswith(b'x'), data)
 
     def test_large_PYTHONPATH(self):
         with test.support.EnvironmentVarGuard() as env:
@@ -178,8 +178,8 @@
             env['PYTHONPATH'] = path1 + os.pathsep + path2
             p = _spawn_python('-S', '-c', 'import sys; print(sys.path)')
             stdout, _ = p.communicate()
-            self.assert_(path1.encode('ascii') in stdout)
-            self.assert_(path2.encode('ascii') in stdout)
+            self.assertTrue(path1.encode('ascii') in stdout)
+            self.assertTrue(path2.encode('ascii') in stdout)
 
 
 def test_main():
diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py
index e060ec1..7114681 100644
--- a/Lib/test/test_cmd_line_script.py
+++ b/Lib/test/test_cmd_line_script.py
@@ -154,9 +154,9 @@
             print(printed_file)
             print(printed_package)
             print(printed_argv0)
-        self.assert_(printed_file in data)
-        self.assert_(printed_package in data)
-        self.assert_(printed_argv0 in data)
+        self.assertTrue(printed_file in data)
+        self.assertTrue(printed_package in data)
+        self.assertTrue(printed_argv0 in data)
 
     def _check_import_error(self, script_name, expected_msg,
                             *cmd_line_switches):
@@ -166,7 +166,7 @@
             print('Output from test script %r:' % script_name)
             print(data)
             print('Expected output: %r' % expected_msg)
-        self.assert_(expected_msg in data)
+        self.assertTrue(expected_msg in data)
 
     def test_basic_script(self):
         with temp_dir() as script_dir:
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index e060471..9f73453 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -29,14 +29,14 @@
             d = codecs.getincrementaldecoder(encoding)()
             part1 = d.decode(s[:i])
             state = d.getstate()
-            self.assert_(isinstance(state[1], int))
+            self.assertTrue(isinstance(state[1], int))
             # Check that the condition stated in the documentation for
             # IncrementalDecoder.getstate() holds
             if not state[1]:
                 # reset decoder to the default state without anything buffered
                 d.setstate((state[0][:0], 0))
                 # Feeding the previous input may not produce any output
-                self.assert_(not d.decode(state[0]))
+                self.assertTrue(not d.decode(state[0]))
                 # The decoder must return to the same state
                 self.assertEqual(state, d.getstate())
             # Create a new decoder and set it to the state
@@ -296,7 +296,7 @@
         f.write("spam")
         d = s.getvalue()
         # check whether there is exactly one BOM in it
-        self.assert_(d == self.spamle or d == self.spambe)
+        self.assertTrue(d == self.spamle or d == self.spambe)
         # try to read it back
         s = io.BytesIO(d)
         f = reader(s)
@@ -429,7 +429,7 @@
         f.write("spam")
         d = s.getvalue()
         # check whether there is exactly one BOM in it
-        self.assert_(d == self.spamle or d == self.spambe)
+        self.assertTrue(d == self.spamle or d == self.spambe)
         # try to read it back
         s = io.BytesIO(d)
         f = reader(s)
@@ -1335,7 +1335,7 @@
                 for c in s:
                     writer.write(c)
                     chunk = q.read()
-                    self.assert_(type(chunk) is bytes, type(chunk))
+                    self.assertTrue(type(chunk) is bytes, type(chunk))
                     encodedresult += chunk
                 q = Queue(b"")
                 reader = codecs.getreader(encoding)(q)
diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py
index 134c3ae..ad44121 100644
--- a/Lib/test/test_codeop.py
+++ b/Lib/test/test_codeop.py
@@ -23,7 +23,7 @@
         '''succeed iff str is a valid piece of code'''
         if is_jython:
             code = compile_command(str, "<input>", symbol)
-            self.assert_(code)
+            self.assertTrue(code)
             if symbol == "single":
                 d,r = {},{}
                 saved_stdout = sys.stdout
@@ -52,9 +52,9 @@
             compile_command(str,symbol=symbol)
             self.fail("No exception thrown for invalid code")
         except SyntaxError:
-            self.assert_(is_syntax)
+            self.assertTrue(is_syntax)
         except OverflowError:
-            self.assert_(not is_syntax)
+            self.assertTrue(not is_syntax)
 
     def test_valid(self):
         av = self.assertValid
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 8387564..ded8b70 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -44,9 +44,9 @@
         namedtuple('_', 'a b c')        # Test leading underscores in a typename
 
         nt = namedtuple('nt', 'the quick brown fox')                       # check unicode input
-        self.assert_("u'" not in repr(nt._fields))
+        self.assertTrue("u'" not in repr(nt._fields))
         nt = namedtuple('nt', ('the', 'quick'))                           # check unicode input
-        self.assert_("u'" not in repr(nt._fields))
+        self.assertTrue("u'" not in repr(nt._fields))
 
         self.assertRaises(TypeError, Point._make, [11])                     # catch too few args
         self.assertRaises(TypeError, Point._make, [11, 22, 33])             # catch too many args
@@ -75,8 +75,8 @@
         self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals())   # wrong keyword argument
         self.assertRaises(TypeError, eval, 'Point(x=1)', locals())          # missing keyword argument
         self.assertEqual(repr(p), 'Point(x=11, y=22)')
-        self.assert_('__dict__' not in dir(p))                              # verify instance has no dict
-        self.assert_('__weakref__' not in dir(p))
+        self.assertTrue('__dict__' not in dir(p))                              # verify instance has no dict
+        self.assertTrue('__weakref__' not in dir(p))
         self.assertEqual(p, Point._make([11, 22]))                          # test _make classmethod
         self.assertEqual(p._fields, ('x', 'y'))                             # test _fields attribute
         self.assertEqual(p._replace(x=1), (1, 22))                          # test _replace method
@@ -103,7 +103,7 @@
         Point = namedtuple('Point', 'x y')
         p = Point(11, 22)
 
-        self.assert_(isinstance(p, tuple))
+        self.assertTrue(isinstance(p, tuple))
         self.assertEqual(p, (11, 22))                                       # matches a real tuple
         self.assertEqual(tuple(p), (11, 22))                                # coercable to a real tuple
         self.assertEqual(list(p), [11, 22])                                 # coercable to a list
@@ -236,8 +236,8 @@
         # Check some non-hashables
         non_samples = [bytearray(), list(), set(), dict()]
         for x in non_samples:
-            self.failIf(isinstance(x, Hashable), repr(x))
-            self.failIf(issubclass(type(x), Hashable), repr(type(x)))
+            self.assertFalse(isinstance(x, Hashable), repr(x))
+            self.assertFalse(issubclass(type(x), Hashable), repr(type(x)))
         # Check some hashables
         samples = [None,
                    int(), float(), complex(),
@@ -246,23 +246,23 @@
                    int, list, object, type, bytes()
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Hashable), repr(x))
-            self.failUnless(issubclass(type(x), Hashable), repr(type(x)))
+            self.assertTrue(isinstance(x, Hashable), repr(x))
+            self.assertTrue(issubclass(type(x), Hashable), repr(type(x)))
         self.assertRaises(TypeError, Hashable)
         # Check direct subclassing
         class H(Hashable):
             def __hash__(self):
                 return super().__hash__()
         self.assertEqual(hash(H()), 0)
-        self.failIf(issubclass(int, H))
+        self.assertFalse(issubclass(int, H))
         self.validate_abstract_methods(Hashable, '__hash__')
 
     def test_Iterable(self):
         # Check some non-iterables
         non_samples = [None, 42, 3.14, 1j]
         for x in non_samples:
-            self.failIf(isinstance(x, Iterable), repr(x))
-            self.failIf(issubclass(type(x), Iterable), repr(type(x)))
+            self.assertFalse(isinstance(x, Iterable), repr(x))
+            self.assertFalse(issubclass(type(x), Iterable), repr(type(x)))
         # Check some iterables
         samples = [bytes(), str(),
                    tuple(), list(), set(), frozenset(), dict(),
@@ -271,21 +271,21 @@
                    (x for x in []),
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Iterable), repr(x))
-            self.failUnless(issubclass(type(x), Iterable), repr(type(x)))
+            self.assertTrue(isinstance(x, Iterable), repr(x))
+            self.assertTrue(issubclass(type(x), Iterable), repr(type(x)))
         # Check direct subclassing
         class I(Iterable):
             def __iter__(self):
                 return super().__iter__()
         self.assertEqual(list(I()), [])
-        self.failIf(issubclass(str, I))
+        self.assertFalse(issubclass(str, I))
         self.validate_abstract_methods(Iterable, '__iter__')
 
     def test_Iterator(self):
         non_samples = [None, 42, 3.14, 1j, b"", "", (), [], {}, set()]
         for x in non_samples:
-            self.failIf(isinstance(x, Iterator), repr(x))
-            self.failIf(issubclass(type(x), Iterator), repr(type(x)))
+            self.assertFalse(isinstance(x, Iterator), repr(x))
+            self.assertFalse(issubclass(type(x), Iterator), repr(type(x)))
         samples = [iter(bytes()), iter(str()),
                    iter(tuple()), iter(list()), iter(dict()),
                    iter(set()), iter(frozenset()),
@@ -295,8 +295,8 @@
                    (x for x in []),
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Iterator), repr(x))
-            self.failUnless(issubclass(type(x), Iterator), repr(type(x)))
+            self.assertTrue(isinstance(x, Iterator), repr(x))
+            self.assertTrue(issubclass(type(x), Iterator), repr(type(x)))
         self.validate_abstract_methods(Iterator, '__next__')
 
     def test_Sized(self):
@@ -305,15 +305,15 @@
                        (x for x in []),
                        ]
         for x in non_samples:
-            self.failIf(isinstance(x, Sized), repr(x))
-            self.failIf(issubclass(type(x), Sized), repr(type(x)))
+            self.assertFalse(isinstance(x, Sized), repr(x))
+            self.assertFalse(issubclass(type(x), Sized), repr(type(x)))
         samples = [bytes(), str(),
                    tuple(), list(), set(), frozenset(), dict(),
                    dict().keys(), dict().items(), dict().values(),
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Sized), repr(x))
-            self.failUnless(issubclass(type(x), Sized), repr(type(x)))
+            self.assertTrue(isinstance(x, Sized), repr(x))
+            self.assertTrue(issubclass(type(x), Sized), repr(type(x)))
         self.validate_abstract_methods(Sized, '__len__')
 
     def test_Container(self):
@@ -322,15 +322,15 @@
                        (x for x in []),
                        ]
         for x in non_samples:
-            self.failIf(isinstance(x, Container), repr(x))
-            self.failIf(issubclass(type(x), Container), repr(type(x)))
+            self.assertFalse(isinstance(x, Container), repr(x))
+            self.assertFalse(issubclass(type(x), Container), repr(type(x)))
         samples = [bytes(), str(),
                    tuple(), list(), set(), frozenset(), dict(),
                    dict().keys(), dict().items(),
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Container), repr(x))
-            self.failUnless(issubclass(type(x), Container), repr(type(x)))
+            self.assertTrue(isinstance(x, Container), repr(x))
+            self.assertTrue(issubclass(type(x), Container), repr(type(x)))
         self.validate_abstract_methods(Container, '__contains__')
 
     def test_Callable(self):
@@ -340,32 +340,32 @@
                        (x for x in []),
                        ]
         for x in non_samples:
-            self.failIf(isinstance(x, Callable), repr(x))
-            self.failIf(issubclass(type(x), Callable), repr(type(x)))
+            self.assertFalse(isinstance(x, Callable), repr(x))
+            self.assertFalse(issubclass(type(x), Callable), repr(type(x)))
         samples = [lambda: None,
                    type, int, object,
                    len,
                    list.append, [].append,
                    ]
         for x in samples:
-            self.failUnless(isinstance(x, Callable), repr(x))
-            self.failUnless(issubclass(type(x), Callable), repr(type(x)))
+            self.assertTrue(isinstance(x, Callable), repr(x))
+            self.assertTrue(issubclass(type(x), Callable), repr(type(x)))
         self.validate_abstract_methods(Callable, '__call__')
 
     def test_direct_subclassing(self):
         for B in Hashable, Iterable, Iterator, Sized, Container, Callable:
             class C(B):
                 pass
-            self.failUnless(issubclass(C, B))
-            self.failIf(issubclass(int, C))
+            self.assertTrue(issubclass(C, B))
+            self.assertFalse(issubclass(int, C))
 
     def test_registration(self):
         for B in Hashable, Iterable, Iterator, Sized, Container, Callable:
             class C:
                 __hash__ = None  # Make sure it isn't hashable by default
-            self.failIf(issubclass(C, B), B.__name__)
+            self.assertFalse(issubclass(C, B), B.__name__)
             B.register(C)
-            self.failUnless(issubclass(C, B))
+            self.assertTrue(issubclass(C, B))
 
 class WithSet(MutableSet):
 
@@ -395,8 +395,8 @@
 
     def test_Set(self):
         for sample in [set, frozenset]:
-            self.failUnless(isinstance(sample(), Set))
-            self.failUnless(issubclass(sample, Set))
+            self.assertTrue(isinstance(sample(), Set))
+            self.assertTrue(issubclass(sample, Set))
         self.validate_abstract_methods(Set, '__contains__', '__iter__', '__len__')
 
     def test_hash_Set(self):
@@ -412,13 +412,13 @@
             def __hash__(self):
                 return self._hash()
         a, b = OneTwoThreeSet(), OneTwoThreeSet()
-        self.failUnless(hash(a) == hash(b))
+        self.assertTrue(hash(a) == hash(b))
 
     def test_MutableSet(self):
-        self.failUnless(isinstance(set(), MutableSet))
-        self.failUnless(issubclass(set, MutableSet))
-        self.failIf(isinstance(frozenset(), MutableSet))
-        self.failIf(issubclass(frozenset, MutableSet))
+        self.assertTrue(isinstance(set(), MutableSet))
+        self.assertTrue(issubclass(set, MutableSet))
+        self.assertFalse(isinstance(frozenset(), MutableSet))
+        self.assertFalse(issubclass(frozenset, MutableSet))
         self.validate_abstract_methods(MutableSet, '__contains__', '__iter__', '__len__',
             'add', 'discard')
 
@@ -457,46 +457,46 @@
 
     def test_Mapping(self):
         for sample in [dict]:
-            self.failUnless(isinstance(sample(), Mapping))
-            self.failUnless(issubclass(sample, Mapping))
+            self.assertTrue(isinstance(sample(), Mapping))
+            self.assertTrue(issubclass(sample, Mapping))
         self.validate_abstract_methods(Mapping, '__contains__', '__iter__', '__len__',
             '__getitem__')
 
     def test_MutableMapping(self):
         for sample in [dict]:
-            self.failUnless(isinstance(sample(), MutableMapping))
-            self.failUnless(issubclass(sample, MutableMapping))
+            self.assertTrue(isinstance(sample(), MutableMapping))
+            self.assertTrue(issubclass(sample, MutableMapping))
         self.validate_abstract_methods(MutableMapping, '__contains__', '__iter__', '__len__',
             '__getitem__', '__setitem__', '__delitem__')
 
     def test_Sequence(self):
         for sample in [tuple, list, bytes, str]:
-            self.failUnless(isinstance(sample(), Sequence))
-            self.failUnless(issubclass(sample, Sequence))
-        self.failUnless(isinstance(range(10), Sequence))
-        self.failUnless(issubclass(range, Sequence))
-        self.failUnless(issubclass(str, Sequence))
+            self.assertTrue(isinstance(sample(), Sequence))
+            self.assertTrue(issubclass(sample, Sequence))
+        self.assertTrue(isinstance(range(10), Sequence))
+        self.assertTrue(issubclass(range, Sequence))
+        self.assertTrue(issubclass(str, Sequence))
         self.validate_abstract_methods(Sequence, '__contains__', '__iter__', '__len__',
             '__getitem__')
 
     def test_ByteString(self):
         for sample in [bytes, bytearray]:
-            self.failUnless(isinstance(sample(), ByteString))
-            self.failUnless(issubclass(sample, ByteString))
+            self.assertTrue(isinstance(sample(), ByteString))
+            self.assertTrue(issubclass(sample, ByteString))
         for sample in [str, list, tuple]:
-            self.failIf(isinstance(sample(), ByteString))
-            self.failIf(issubclass(sample, ByteString))
-        self.failIf(isinstance(memoryview(b""), ByteString))
-        self.failIf(issubclass(memoryview, ByteString))
+            self.assertFalse(isinstance(sample(), ByteString))
+            self.assertFalse(issubclass(sample, ByteString))
+        self.assertFalse(isinstance(memoryview(b""), ByteString))
+        self.assertFalse(issubclass(memoryview, ByteString))
 
     def test_MutableSequence(self):
         for sample in [tuple, str, bytes]:
-            self.failIf(isinstance(sample(), MutableSequence))
-            self.failIf(issubclass(sample, MutableSequence))
+            self.assertFalse(isinstance(sample(), MutableSequence))
+            self.assertFalse(issubclass(sample, MutableSequence))
         for sample in [list, bytearray]:
-            self.failUnless(isinstance(sample(), MutableSequence))
-            self.failUnless(issubclass(sample, MutableSequence))
-        self.failIf(issubclass(str, MutableSequence))
+            self.assertTrue(isinstance(sample(), MutableSequence))
+            self.assertTrue(issubclass(sample, MutableSequence))
+        self.assertFalse(issubclass(str, MutableSequence))
         self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__',
             '__len__', '__getitem__', '__setitem__', '__delitem__', 'insert')
 
@@ -506,10 +506,10 @@
         c = Counter('abcaba')
         self.assertEqual(c, Counter({'a':3 , 'b': 2, 'c': 1}))
         self.assertEqual(c, Counter(a=3, b=2, c=1))
-        self.assert_(isinstance(c, dict))
-        self.assert_(isinstance(c, Mapping))
-        self.assert_(issubclass(Counter, dict))
-        self.assert_(issubclass(Counter, Mapping))
+        self.assertTrue(isinstance(c, dict))
+        self.assertTrue(isinstance(c, Mapping))
+        self.assertTrue(issubclass(Counter, dict))
+        self.assertTrue(issubclass(Counter, Mapping))
         self.assertEqual(len(c), 3)
         self.assertEqual(sum(c.values()), 6)
         self.assertEqual(sorted(c.values()), [1, 2, 3])
@@ -581,7 +581,7 @@
                     Counter(words),
                     ]):
             msg = (i, dup, words)
-            self.assert_(dup is not words)
+            self.assertTrue(dup is not words)
             self.assertEquals(dup, words)
             self.assertEquals(len(dup), len(words))
             self.assertEquals(type(dup), type(words))
@@ -597,7 +597,7 @@
     def test_invariant_for_the_in_operator(self):
         c = Counter(a=10, b=-2, c=0)
         for elem in c:
-            self.assert_(elem in c)
+            self.assertTrue(elem in c)
 
     def test_multiset_operations(self):
         # Verify that adding a zero counter will strip zeros and negatives
@@ -622,7 +622,7 @@
                     self.assertEqual(numberop(p[x], q[x]), result[x],
                                      (counterop, x, p, q))
                 # verify that results exclude non-positive counts
-                self.assert_(x>0 for x in result.values())
+                self.assertTrue(x>0 for x in result.values())
 
         elements = 'abcdef'
         for i in range(100):
@@ -697,7 +697,7 @@
         pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
         od = OrderedDict(pairs)
         del od['a']
-        self.assert_('a' not in od)
+        self.assertTrue('a' not in od)
         with self.assertRaises(KeyError):
             del od['a']
         self.assertEqual(list(od.items()), pairs[:2] + pairs[3:])
@@ -778,7 +778,7 @@
                     update_test,
                     OrderedDict(od),
                     ]):
-            self.assert_(dup is not od)
+            self.assertTrue(dup is not od)
             self.assertEquals(dup, od)
             self.assertEquals(list(dup.items()), list(od.items()))
             self.assertEquals(len(dup), len(od))
@@ -791,7 +791,7 @@
         od = OrderedDict(pairs)
         # yaml.dump(od) -->
         # '!!python/object/apply:__main__.OrderedDict\n- - [a, 1]\n  - [b, 2]\n'
-        self.assert_(all(type(pair)==list for pair in od.__reduce__()[1]))
+        self.assertTrue(all(type(pair)==list for pair in od.__reduce__()[1]))
 
     def test_reduce_not_too_fat(self):
         # do not save instance dictionary if not needed
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 2b978eb..5d1f478 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -372,10 +372,10 @@
                 import __mangled_mod
                 import __package__.module
 
-        self.assert_("_A__mangled" in A.f.__code__.co_varnames)
-        self.assert_("__not_mangled__" in A.f.__code__.co_varnames)
-        self.assert_("_A__mangled_mod" in A.f.__code__.co_varnames)
-        self.assert_("__package__" in A.f.__code__.co_varnames)
+        self.assertTrue("_A__mangled" in A.f.__code__.co_varnames)
+        self.assertTrue("__not_mangled__" in A.f.__code__.co_varnames)
+        self.assertTrue("_A__mangled_mod" in A.f.__code__.co_varnames)
+        self.assertTrue("__package__" in A.f.__code__.co_varnames)
 
     def test_compile_ast(self):
         fname = __file__
@@ -394,7 +394,7 @@
         for fname, code in sample_code:
             co1 = compile(code, '%s1' % fname, 'exec')
             ast = compile(code, '%s2' % fname, 'exec', _ast.PyCF_ONLY_AST)
-            self.assert_(type(ast) == _ast.Module)
+            self.assertTrue(type(ast) == _ast.Module)
             co2 = compile(ast, '%s3' % fname, 'exec')
             self.assertEqual(co1, co2)
             # the code object's filename comes from the second compilation step
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index f621186..faa7e1f 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -35,7 +35,7 @@
         if x == 0:
             return abs(y) < eps
         # check that relative difference < eps
-        self.assert_(abs((x-y)/y) < eps)
+        self.assertTrue(abs((x-y)/y) < eps)
 
     def assertFloatsAreIdentical(self, x, y):
         """assert that floats x and y are identical, in the sense that:
@@ -66,7 +66,7 @@
         self.assertCloseAbs(x.imag, y.imag, eps)
 
     def assertIs(self, a, b):
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
     def check_div(self, x, y):
         """Compute complex z=x*y, and check that z/x==y and z/y==x."""
@@ -174,8 +174,8 @@
 
     def test_boolcontext(self):
         for i in range(100):
-            self.assert_(complex(random() + 1e-6, random() + 1e-6))
-        self.assert_(not complex(0.0, 0.0))
+            self.assertTrue(complex(random() + 1e-6, random() + 1e-6))
+        self.assertTrue(not complex(0.0, 0.0))
 
     def test_conjugate(self):
         self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
@@ -257,7 +257,7 @@
         self.assertEqual(split_zeros(complex(-0., 1.).real), split_zeros(-0.))
 
         c = 3.14 + 1j
-        self.assert_(complex(c) is c)
+        self.assertTrue(complex(c) is c)
         del c
 
         self.assertRaises(TypeError, complex, "1", "1")
diff --git a/Lib/test/test_contains.py b/Lib/test/test_contains.py
index 3f0b234..622dfd4 100644
--- a/Lib/test/test_contains.py
+++ b/Lib/test/test_contains.py
@@ -20,19 +20,19 @@
         a = base_set(1)
         b = myset(1)
         c = seq(1)
-        self.assert_(1 in b)
-        self.assert_(0 not in b)
-        self.assert_(1 in c)
-        self.assert_(0 not in c)
+        self.assertTrue(1 in b)
+        self.assertTrue(0 not in b)
+        self.assertTrue(1 in c)
+        self.assertTrue(0 not in c)
         self.assertRaises(TypeError, lambda: 1 in a)
         self.assertRaises(TypeError, lambda: 1 not in a)
 
         # test char in string
-        self.assert_('c' in 'abc')
-        self.assert_('d' not in 'abc')
+        self.assertTrue('c' in 'abc')
+        self.assertTrue('d' not in 'abc')
 
-        self.assert_('' in '')
-        self.assert_('' in 'abc')
+        self.assertTrue('' in '')
+        self.assertTrue('' in 'abc')
 
         self.assertRaises(TypeError, lambda: None in 'abc')
 
@@ -40,15 +40,15 @@
         # a collection of tests on builtin sequence types
         a = range(10)
         for i in a:
-            self.assert_(i in a)
-        self.assert_(16 not in a)
-        self.assert_(a not in a)
+            self.assertTrue(i in a)
+        self.assertTrue(16 not in a)
+        self.assertTrue(a not in a)
 
         a = tuple(a)
         for i in a:
-            self.assert_(i in a)
-        self.assert_(16 not in a)
-        self.assert_(a not in a)
+            self.assertTrue(i in a)
+        self.assertTrue(16 not in a)
+        self.assertTrue(a not in a)
 
         class Deviant1:
             """Behaves strangely when compared
@@ -64,7 +64,7 @@
                     self.aList.remove(14)
                 return 0
 
-        self.assert_(Deviant1() not in Deviant1.aList)
+        self.assertTrue(Deviant1() not in Deviant1.aList)
 
     def test_nonreflexive(self):
         # containment and equality tests involving elements that are
@@ -81,9 +81,9 @@
         for constructor in constructors:
             container = constructor(values)
             for elem in container:
-                self.assert_(elem in container)
-            self.assert_(container == constructor(values))
-            self.assert_(container == container)
+                self.assertTrue(elem in container)
+            self.assertTrue(container == constructor(values))
+            self.assertTrue(container == container)
 
 
 def test_main():
diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py
index f97cd81..015a0c5 100644
--- a/Lib/test/test_contextlib.py
+++ b/Lib/test/test_contextlib.py
@@ -54,7 +54,7 @@
         ctx = whee()
         ctx.__enter__()
         # Calling __exit__ should not result in an exception
-        self.failIf(ctx.__exit__(TypeError, TypeError("foo"), None))
+        self.assertFalse(ctx.__exit__(TypeError, TypeError("foo"), None))
 
     def test_contextmanager_trap_yield_after_throw(self):
         @contextmanager
@@ -261,17 +261,17 @@
         try:
             f = None
             with open(tfn, "w") as f:
-                self.failIf(f.closed)
+                self.assertFalse(f.closed)
                 f.write("Booh\n")
-            self.failUnless(f.closed)
+            self.assertTrue(f.closed)
             f = None
             try:
                 with open(tfn, "r") as f:
-                    self.failIf(f.closed)
+                    self.assertFalse(f.closed)
                     self.assertEqual(f.read(), "Booh\n")
                     1/0
             except ZeroDivisionError:
-                self.failUnless(f.closed)
+                self.assertTrue(f.closed)
             else:
                 self.fail("Didn't raise ZeroDivisionError")
         finally:
@@ -283,16 +283,16 @@
 class LockContextTestCase(unittest.TestCase):
 
     def boilerPlate(self, lock, locked):
-        self.failIf(locked())
+        self.assertFalse(locked())
         with lock:
-            self.failUnless(locked())
-        self.failIf(locked())
+            self.assertTrue(locked())
+        self.assertFalse(locked())
         try:
             with lock:
-                self.failUnless(locked())
+                self.assertTrue(locked())
                 1/0
         except ZeroDivisionError:
-            self.failIf(locked())
+            self.assertFalse(locked())
         else:
             self.fail("Didn't raise ZeroDivisionError")
 
diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py
index 502bf3f..2af2109 100644
--- a/Lib/test/test_copy.py
+++ b/Lib/test/test_copy.py
@@ -17,8 +17,8 @@
     # Attempt full line coverage of copy.py from top to bottom
 
     def test_exceptions(self):
-        self.assert_(copy.Error is copy.error)
-        self.assert_(issubclass(copy.Error, Exception))
+        self.assertTrue(copy.Error is copy.error)
+        self.assertTrue(issubclass(copy.Error, Exception))
 
     # The copy() method
 
@@ -59,7 +59,7 @@
                 raise support.TestFailed("shouldn't call this")
         x = C()
         y = copy.copy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
 
     def test_copy_reduce(self):
         class C(object):
@@ -67,7 +67,7 @@
                 return ""
         x = C()
         y = copy.copy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
 
     def test_copy_cant(self):
         class C(object):
@@ -91,7 +91,7 @@
                  "hello", "hello\u1234", f.__code__,
                  NewStyle, range(10), Classic, max]
         for x in tests:
-            self.assert_(copy.copy(x) is x, repr(x))
+            self.assertTrue(copy.copy(x) is x, repr(x))
 
     def test_copy_list(self):
         x = [1, 2, 3]
@@ -185,9 +185,9 @@
         x = [x, x]
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y[0] is not x[0])
-        self.assert_(y[0] is y[1])
+        self.assertTrue(y is not x)
+        self.assertTrue(y[0] is not x[0])
+        self.assertTrue(y[0] is y[1])
 
     def test_deepcopy_issubclass(self):
         # XXX Note: there's no way to test the TypeError coming out of
@@ -232,7 +232,7 @@
                 raise support.TestFailed("shouldn't call this")
         x = C()
         y = copy.deepcopy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
 
     def test_deepcopy_reduce(self):
         class C(object):
@@ -240,7 +240,7 @@
                 return ""
         x = C()
         y = copy.deepcopy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
 
     def test_deepcopy_cant(self):
         class C(object):
@@ -264,14 +264,14 @@
                  "hello", "hello\u1234", f.__code__,
                  NewStyle, range(10), Classic, max]
         for x in tests:
-            self.assert_(copy.deepcopy(x) is x, repr(x))
+            self.assertTrue(copy.deepcopy(x) is x, repr(x))
 
     def test_deepcopy_list(self):
         x = [[1, 2], 3]
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(x is not y)
-        self.assert_(x[0] is not y[0])
+        self.assertTrue(x is not y)
+        self.assertTrue(x[0] is not y[0])
 
     def test_deepcopy_reflexive_list(self):
         x = []
@@ -279,16 +279,16 @@
         y = copy.deepcopy(x)
         for op in comparisons:
             self.assertRaises(RuntimeError, op, y, x)
-        self.assert_(y is not x)
-        self.assert_(y[0] is y)
+        self.assertTrue(y is not x)
+        self.assertTrue(y[0] is y)
         self.assertEqual(len(y), 1)
 
     def test_deepcopy_tuple(self):
         x = ([1, 2], 3)
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(x is not y)
-        self.assert_(x[0] is not y[0])
+        self.assertTrue(x is not y)
+        self.assertTrue(x[0] is not y[0])
 
     def test_deepcopy_reflexive_tuple(self):
         x = ([],)
@@ -296,16 +296,16 @@
         y = copy.deepcopy(x)
         for op in comparisons:
             self.assertRaises(RuntimeError, op, y, x)
-        self.assert_(y is not x)
-        self.assert_(y[0] is not x[0])
-        self.assert_(y[0][0] is y)
+        self.assertTrue(y is not x)
+        self.assertTrue(y[0] is not x[0])
+        self.assertTrue(y[0][0] is y)
 
     def test_deepcopy_dict(self):
         x = {"foo": [1, 2], "bar": 3}
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(x is not y)
-        self.assert_(x["foo"] is not y["foo"])
+        self.assertTrue(x is not y)
+        self.assertTrue(x["foo"] is not y["foo"])
 
     def test_deepcopy_reflexive_dict(self):
         x = {}
@@ -315,15 +315,15 @@
             self.assertRaises(TypeError, op, y, x)
         for op in equality_comparisons:
             self.assertRaises(RuntimeError, op, y, x)
-        self.assert_(y is not x)
-        self.assert_(y['foo'] is y)
+        self.assertTrue(y is not x)
+        self.assertTrue(y['foo'] is y)
         self.assertEqual(len(y), 1)
 
     def test_deepcopy_keepalive(self):
         memo = {}
         x = 42
         y = copy.deepcopy(x, memo)
-        self.assert_(memo[id(x)] is x)
+        self.assertTrue(memo[id(x)] is x)
 
     def test_deepcopy_inst_vanilla(self):
         class C:
@@ -334,7 +334,7 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_inst_deepcopy(self):
         class C:
@@ -347,8 +347,8 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_inst_getinitargs(self):
         class C:
@@ -361,8 +361,8 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_inst_getstate(self):
         class C:
@@ -375,8 +375,8 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_inst_setstate(self):
         class C:
@@ -389,8 +389,8 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_inst_getstate_setstate(self):
         class C:
@@ -405,8 +405,8 @@
         x = C([42])
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_deepcopy_reflexive_inst(self):
         class C:
@@ -414,8 +414,8 @@
         x = C()
         x.foo = x
         y = copy.deepcopy(x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is y)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is y)
 
     # _reconstruct()
 
@@ -425,9 +425,9 @@
                 return ""
         x = C()
         y = copy.copy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
         y = copy.deepcopy(x)
-        self.assert_(y is x)
+        self.assertTrue(y is x)
 
     def test_reconstruct_nostate(self):
         class C(object):
@@ -436,9 +436,9 @@
         x = C()
         x.foo = 42
         y = copy.copy(x)
-        self.assert_(y.__class__ is x.__class__)
+        self.assertTrue(y.__class__ is x.__class__)
         y = copy.deepcopy(x)
-        self.assert_(y.__class__ is x.__class__)
+        self.assertTrue(y.__class__ is x.__class__)
 
     def test_reconstruct_state(self):
         class C(object):
@@ -452,7 +452,7 @@
         self.assertEqual(y, x)
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_reconstruct_state_setstate(self):
         class C(object):
@@ -468,7 +468,7 @@
         self.assertEqual(y, x)
         y = copy.deepcopy(x)
         self.assertEqual(y, x)
-        self.assert_(y.foo is not x.foo)
+        self.assertTrue(y.foo is not x.foo)
 
     def test_reconstruct_reflexive(self):
         class C(object):
@@ -476,8 +476,8 @@
         x = C()
         x.foo = x
         y = copy.deepcopy(x)
-        self.assert_(y is not x)
-        self.assert_(y.foo is y)
+        self.assertTrue(y is not x)
+        self.assertTrue(y.foo is y)
 
     # Additions for Python 2.3 and pickle protocol 2
 
@@ -491,12 +491,12 @@
         x = C([[1, 2], 3])
         y = copy.copy(x)
         self.assertEqual(x, y)
-        self.assert_(x is not y)
-        self.assert_(x[0] is y[0])
+        self.assertTrue(x is not y)
+        self.assertTrue(x[0] is y[0])
         y = copy.deepcopy(x)
         self.assertEqual(x, y)
-        self.assert_(x is not y)
-        self.assert_(x[0] is not y[0])
+        self.assertTrue(x is not y)
+        self.assertTrue(x[0] is not y[0])
 
     def test_reduce_5tuple(self):
         class C(dict):
@@ -508,12 +508,12 @@
         x = C([("foo", [1, 2]), ("bar", 3)])
         y = copy.copy(x)
         self.assertEqual(x, y)
-        self.assert_(x is not y)
-        self.assert_(x["foo"] is y["foo"])
+        self.assertTrue(x is not y)
+        self.assertTrue(x["foo"] is y["foo"])
         y = copy.deepcopy(x)
         self.assertEqual(x, y)
-        self.assert_(x is not y)
-        self.assert_(x["foo"] is not y["foo"])
+        self.assertTrue(x is not y)
+        self.assertTrue(x["foo"] is not y["foo"])
 
     def test_copy_slots(self):
         class C(object):
@@ -521,7 +521,7 @@
         x = C()
         x.foo = [42]
         y = copy.copy(x)
-        self.assert_(x.foo is y.foo)
+        self.assertTrue(x.foo is y.foo)
 
     def test_deepcopy_slots(self):
         class C(object):
@@ -530,7 +530,7 @@
         x.foo = [42]
         y = copy.deepcopy(x)
         self.assertEqual(x.foo, y.foo)
-        self.assert_(x.foo is not y.foo)
+        self.assertTrue(x.foo is not y.foo)
 
     def test_copy_list_subclass(self):
         class C(list):
@@ -540,8 +540,8 @@
         y = copy.copy(x)
         self.assertEqual(list(x), list(y))
         self.assertEqual(x.foo, y.foo)
-        self.assert_(x[0] is y[0])
-        self.assert_(x.foo is y.foo)
+        self.assertTrue(x[0] is y[0])
+        self.assertTrue(x.foo is y.foo)
 
     def test_deepcopy_list_subclass(self):
         class C(list):
@@ -551,8 +551,8 @@
         y = copy.deepcopy(x)
         self.assertEqual(list(x), list(y))
         self.assertEqual(x.foo, y.foo)
-        self.assert_(x[0] is not y[0])
-        self.assert_(x.foo is not y.foo)
+        self.assertTrue(x[0] is not y[0])
+        self.assertTrue(x.foo is not y.foo)
 
     def test_copy_tuple_subclass(self):
         class C(tuple):
@@ -569,8 +569,8 @@
         self.assertEqual(tuple(x), ([1, 2], 3))
         y = copy.deepcopy(x)
         self.assertEqual(tuple(y), ([1, 2], 3))
-        self.assert_(x is not y)
-        self.assert_(x[0] is not y[0])
+        self.assertTrue(x is not y)
+        self.assertTrue(x[0] is not y[0])
 
     def test_getstate_exc(self):
         class EvilState(object):
diff --git a/Lib/test/test_copyreg.py b/Lib/test/test_copyreg.py
index 48e58ea..4fb89d0 100644
--- a/Lib/test/test_copyreg.py
+++ b/Lib/test/test_copyreg.py
@@ -51,10 +51,10 @@
                               mod, func, code)
             copyreg.add_extension(mod, func, code)
             # Should be in the registry.
-            self.assert_(copyreg._extension_registry[mod, func] == code)
-            self.assert_(copyreg._inverted_registry[code] == (mod, func))
+            self.assertTrue(copyreg._extension_registry[mod, func] == code)
+            self.assertTrue(copyreg._inverted_registry[code] == (mod, func))
             # Shouldn't be in the cache.
-            self.assert_(code not in copyreg._extension_cache)
+            self.assertTrue(code not in copyreg._extension_cache)
             # Redundant registration should be OK.
             copyreg.add_extension(mod, func, code)  # shouldn't blow up
             # Conflicting code.
@@ -81,7 +81,7 @@
             e.restore()
 
         # Shouldn't be there anymore.
-        self.assert_((mod, func) not in copyreg._extension_registry)
+        self.assertTrue((mod, func) not in copyreg._extension_registry)
         # The code *may* be in copyreg._extension_registry, though, if
         # we happened to pick on a registered code.  So don't check for
         # that.
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py
index 7eb3a7f..95105be 100644
--- a/Lib/test/test_csv.py
+++ b/Lib/test/test_csv.py
@@ -315,7 +315,7 @@
         expected_dialects.sort()
         csv.register_dialect(name, myexceltsv)
         try:
-            self.failUnless(csv.get_dialect(name).delimiter, '\t')
+            self.assertTrue(csv.get_dialect(name).delimiter, '\t')
             got_dialects = csv.list_dialects()
             got_dialects.sort()
             self.assertEqual(expected_dialects, got_dialects)
@@ -326,8 +326,8 @@
         name = 'fedcba'
         csv.register_dialect(name, delimiter=';')
         try:
-            self.failUnless(csv.get_dialect(name).delimiter, '\t')
-            self.failUnless(list(csv.reader('X;Y;Z', name)), ['X', 'Y', 'Z'])
+            self.assertTrue(csv.get_dialect(name).delimiter, '\t')
+            self.assertTrue(list(csv.reader('X;Y;Z', name)), ['X', 'Y', 'Z'])
         finally:
             csv.unregister_dialect(name)
 
@@ -811,7 +811,7 @@
         # given that all three lines in sample3 are equal,
         # I think that any character could have been 'guessed' as the
         # delimiter, depending on dictionary order
-        self.assert_(dialect.delimiter in self.sample3)
+        self.assertTrue(dialect.delimiter in self.sample3)
         dialect = sniffer.sniff(self.sample3, delimiters="?,")
         self.assertEqual(dialect.delimiter, "?")
         dialect = sniffer.sniff(self.sample3, delimiters="/,")
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py
index b9d5959..8bf8420 100644
--- a/Lib/test/test_datetime.py
+++ b/Lib/test/test_datetime.py
@@ -77,9 +77,9 @@
             def __init__(self, offset, name):
                 self.__offset = offset
                 self.__name = name
-        self.failUnless(issubclass(NotEnough, tzinfo))
+        self.assertTrue(issubclass(NotEnough, tzinfo))
         ne = NotEnough(3, "NotByALongShot")
-        self.failUnless(isinstance(ne, tzinfo))
+        self.assertTrue(isinstance(ne, tzinfo))
 
         dt = datetime.now()
         self.assertRaises(NotImplementedError, ne.tzname, dt)
@@ -88,7 +88,7 @@
 
     def test_normal(self):
         fo = FixedOffset(3, "Three")
-        self.failUnless(isinstance(fo, tzinfo))
+        self.assertTrue(isinstance(fo, tzinfo))
         for dt in datetime.now(), None:
             self.assertEqual(fo.utcoffset(dt), timedelta(minutes=3))
             self.assertEqual(fo.tzname(dt), "Three")
@@ -99,25 +99,25 @@
         # carry no data), but they need to be picklable anyway else
         # concrete subclasses can't be pickled.
         orig = tzinfo.__new__(tzinfo)
-        self.failUnless(type(orig) is tzinfo)
+        self.assertTrue(type(orig) is tzinfo)
         for pickler, unpickler, proto in pickle_choices:
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
-            self.failUnless(type(derived) is tzinfo)
+            self.assertTrue(type(derived) is tzinfo)
 
     def test_pickling_subclass(self):
         # Make sure we can pickle/unpickle an instance of a subclass.
         offset = timedelta(minutes=-300)
         orig = PicklableFixedOffset(offset, 'cookie')
-        self.failUnless(isinstance(orig, tzinfo))
-        self.failUnless(type(orig) is PicklableFixedOffset)
+        self.assertTrue(isinstance(orig, tzinfo))
+        self.assertTrue(type(orig) is PicklableFixedOffset)
         self.assertEqual(orig.utcoffset(None), offset)
         self.assertEqual(orig.tzname(None), 'cookie')
         for pickler, unpickler, proto in pickle_choices:
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
-            self.failUnless(isinstance(derived, tzinfo))
-            self.failUnless(type(derived) is PicklableFixedOffset)
+            self.assertTrue(isinstance(derived, tzinfo))
+            self.assertTrue(type(derived) is PicklableFixedOffset)
             self.assertEqual(derived.utcoffset(None), offset)
             self.assertEqual(derived.tzname(None), 'cookie')
 
@@ -134,16 +134,16 @@
     def test_harmless_mixed_comparison(self):
         me = self.theclass(1, 1, 1)
 
-        self.failIf(me == ())
-        self.failUnless(me != ())
-        self.failIf(() == me)
-        self.failUnless(() != me)
+        self.assertFalse(me == ())
+        self.assertTrue(me != ())
+        self.assertFalse(() == me)
+        self.assertTrue(() != me)
 
-        self.failUnless(me in [1, 20, [], me])
-        self.failIf(me not in [1, 20, [], me])
+        self.assertTrue(me in [1, 20, [], me])
+        self.assertFalse(me not in [1, 20, [], me])
 
-        self.failUnless([] in [me, 1, 20, []])
-        self.failIf([] not in [me, 1, 20, []])
+        self.assertTrue([] in [me, 1, 20, []])
+        self.assertFalse([] not in [me, 1, 20, []])
 
     def test_harmful_mixed_comparison(self):
         me = self.theclass(1, 1, 1)
@@ -303,26 +303,26 @@
         t1 = timedelta(2, 3, 4)
         t2 = timedelta(2, 3, 4)
         self.assertEqual(t1, t2)
-        self.failUnless(t1 <= t2)
-        self.failUnless(t1 >= t2)
-        self.failUnless(not t1 != t2)
-        self.failUnless(not t1 < t2)
-        self.failUnless(not t1 > t2)
+        self.assertTrue(t1 <= t2)
+        self.assertTrue(t1 >= t2)
+        self.assertTrue(not t1 != t2)
+        self.assertTrue(not t1 < t2)
+        self.assertTrue(not t1 > t2)
 
         for args in (3, 3, 3), (2, 4, 4), (2, 3, 5):
             t2 = timedelta(*args)   # this is larger than t1
-            self.failUnless(t1 < t2)
-            self.failUnless(t2 > t1)
-            self.failUnless(t1 <= t2)
-            self.failUnless(t2 >= t1)
-            self.failUnless(t1 != t2)
-            self.failUnless(t2 != t1)
-            self.failUnless(not t1 == t2)
-            self.failUnless(not t2 == t1)
-            self.failUnless(not t1 > t2)
-            self.failUnless(not t2 < t1)
-            self.failUnless(not t1 >= t2)
-            self.failUnless(not t2 <= t1)
+            self.assertTrue(t1 < t2)
+            self.assertTrue(t2 > t1)
+            self.assertTrue(t1 <= t2)
+            self.assertTrue(t2 >= t1)
+            self.assertTrue(t1 != t2)
+            self.assertTrue(t2 != t1)
+            self.assertTrue(not t1 == t2)
+            self.assertTrue(not t2 == t1)
+            self.assertTrue(not t1 > t2)
+            self.assertTrue(not t2 < t1)
+            self.assertTrue(not t1 >= t2)
+            self.assertTrue(not t2 <= t1)
 
         for badarg in OTHERSTUFF:
             self.assertEqual(t1 == badarg, False)
@@ -368,7 +368,7 @@
 
             # Verify td -> string -> td identity.
             s = repr(td)
-            self.failUnless(s.startswith('datetime.'))
+            self.assertTrue(s.startswith('datetime.'))
             s = s[9:]
             td2 = eval(s)
             self.assertEqual(td, td2)
@@ -378,10 +378,10 @@
             self.assertEqual(td, td2)
 
     def test_resolution_info(self):
-        self.assert_(isinstance(timedelta.min, timedelta))
-        self.assert_(isinstance(timedelta.max, timedelta))
-        self.assert_(isinstance(timedelta.resolution, timedelta))
-        self.assert_(timedelta.max > timedelta.min)
+        self.assertTrue(isinstance(timedelta.min, timedelta))
+        self.assertTrue(isinstance(timedelta.max, timedelta))
+        self.assertTrue(isinstance(timedelta.resolution, timedelta))
+        self.assertTrue(timedelta.max > timedelta.min)
         self.assertEqual(timedelta.min, timedelta(-999999999))
         self.assertEqual(timedelta.max, timedelta(999999999, 24*3600-1, 1e6-1))
         self.assertEqual(timedelta.resolution, timedelta(0, 0, 1))
@@ -428,11 +428,11 @@
                          (-1, 24*3600-1, 999999))
 
     def test_bool(self):
-        self.failUnless(timedelta(1))
-        self.failUnless(timedelta(0, 1))
-        self.failUnless(timedelta(0, 0, 1))
-        self.failUnless(timedelta(microseconds=1))
-        self.failUnless(not timedelta(0))
+        self.assertTrue(timedelta(1))
+        self.assertTrue(timedelta(0, 1))
+        self.assertTrue(timedelta(0, 0, 1))
+        self.assertTrue(timedelta(microseconds=1))
+        self.assertTrue(not timedelta(0))
 
     def test_subclass_timedelta(self):
 
@@ -448,17 +448,17 @@
                 return round(sum)
 
         t1 = T(days=1)
-        self.assert_(type(t1) is T)
+        self.assertTrue(type(t1) is T)
         self.assertEqual(t1.as_hours(), 24)
 
         t2 = T(days=-1, seconds=-3600)
-        self.assert_(type(t2) is T)
+        self.assertTrue(type(t2) is T)
         self.assertEqual(t2.as_hours(), -25)
 
         t3 = t1 + t2
-        self.assert_(type(t3) is timedelta)
+        self.assertTrue(type(t3) is timedelta)
         t4 = T.from_td(t3)
-        self.assert_(type(t4) is T)
+        self.assertTrue(type(t4) is T)
         self.assertEqual(t3.days, t4.days)
         self.assertEqual(t3.seconds, t4.seconds)
         self.assertEqual(t3.microseconds, t4.microseconds)
@@ -521,7 +521,7 @@
                    self.theclass.today()):
             # Verify dt -> string -> date identity.
             s = repr(dt)
-            self.failUnless(s.startswith('datetime.'))
+            self.assertTrue(s.startswith('datetime.'))
             s = s[9:]
             dt2 = eval(s)
             self.assertEqual(dt, dt2)
@@ -755,7 +755,7 @@
 
         # It worked or it didn't.  If it didn't, assume it's reason #2, and
         # let the test pass if they're within half a second of each other.
-        self.failUnless(today == todayagain or
+        self.assertTrue(today == todayagain or
                         abs(todayagain - today) < timedelta(seconds=0.5))
 
     def test_weekday(self):
@@ -891,10 +891,10 @@
             self.assertEqual(b.__format__(fmt), 'B')
 
     def test_resolution_info(self):
-        self.assert_(isinstance(self.theclass.min, self.theclass))
-        self.assert_(isinstance(self.theclass.max, self.theclass))
-        self.assert_(isinstance(self.theclass.resolution, timedelta))
-        self.assert_(self.theclass.max > self.theclass.min)
+        self.assertTrue(isinstance(self.theclass.min, self.theclass))
+        self.assertTrue(isinstance(self.theclass.max, self.theclass))
+        self.assertTrue(isinstance(self.theclass.resolution, timedelta))
+        self.assertTrue(self.theclass.max > self.theclass.min)
 
     def test_extreme_timedelta(self):
         big = self.theclass.max - self.theclass.min
@@ -943,26 +943,26 @@
         t1 = self.theclass(2, 3, 4)
         t2 = self.theclass(2, 3, 4)
         self.assertEqual(t1, t2)
-        self.failUnless(t1 <= t2)
-        self.failUnless(t1 >= t2)
-        self.failUnless(not t1 != t2)
-        self.failUnless(not t1 < t2)
-        self.failUnless(not t1 > t2)
+        self.assertTrue(t1 <= t2)
+        self.assertTrue(t1 >= t2)
+        self.assertTrue(not t1 != t2)
+        self.assertTrue(not t1 < t2)
+        self.assertTrue(not t1 > t2)
 
         for args in (3, 3, 3), (2, 4, 4), (2, 3, 5):
             t2 = self.theclass(*args)   # this is larger than t1
-            self.failUnless(t1 < t2)
-            self.failUnless(t2 > t1)
-            self.failUnless(t1 <= t2)
-            self.failUnless(t2 >= t1)
-            self.failUnless(t1 != t2)
-            self.failUnless(t2 != t1)
-            self.failUnless(not t1 == t2)
-            self.failUnless(not t2 == t1)
-            self.failUnless(not t1 > t2)
-            self.failUnless(not t2 < t1)
-            self.failUnless(not t1 >= t2)
-            self.failUnless(not t2 <= t1)
+            self.assertTrue(t1 < t2)
+            self.assertTrue(t2 > t1)
+            self.assertTrue(t1 <= t2)
+            self.assertTrue(t2 >= t1)
+            self.assertTrue(t1 != t2)
+            self.assertTrue(t2 != t1)
+            self.assertTrue(not t1 == t2)
+            self.assertTrue(not t2 == t1)
+            self.assertTrue(not t1 > t2)
+            self.assertTrue(not t2 < t1)
+            self.assertTrue(not t1 >= t2)
+            self.assertTrue(not t2 <= t1)
 
         for badarg in OTHERSTUFF:
             self.assertEqual(t1 == badarg, False)
@@ -1031,8 +1031,8 @@
 
     def test_bool(self):
         # All dates are considered true.
-        self.failUnless(self.theclass.min)
-        self.failUnless(self.theclass.max)
+        self.assertTrue(self.theclass.min)
+        self.assertTrue(self.theclass.max)
 
     def test_strftime_out_of_range(self):
         # For nasty technical reasons, we can't handle years before 1900.
@@ -1155,7 +1155,7 @@
                    self.theclass.now()):
             # Verify dt -> string -> datetime identity.
             s = repr(dt)
-            self.failUnless(s.startswith('datetime.'))
+            self.assertTrue(s.startswith('datetime.'))
             s = s[9:]
             dt2 = eval(s)
             self.assertEqual(dt, dt2)
@@ -1228,7 +1228,7 @@
         dt2 = self.theclass(2002, 3, 1, 10, 0, 0)
         dt3 = self.theclass(2002, 3, 1, 9, 0, 0)
         self.assertEqual(dt1, dt3)
-        self.assert_(dt2 > dt3)
+        self.assertTrue(dt2 > dt3)
 
         # Make sure comparison doesn't forget microseconds, and isn't done
         # via comparing a float timestamp (an IEEE double doesn't have enough
@@ -1239,7 +1239,7 @@
         us = timedelta(microseconds=1)
         dt2 = dt1 + us
         self.assertEqual(dt2 - dt1, us)
-        self.assert_(dt1 < dt2)
+        self.assertTrue(dt1 < dt2)
 
     def test_strftime_with_bad_tzname_replace(self):
         # verify ok if tzinfo.tzname().replace() returns a non-string
@@ -1420,28 +1420,28 @@
         t1 = self.theclass(*args)
         t2 = self.theclass(*args)
         self.assertEqual(t1, t2)
-        self.failUnless(t1 <= t2)
-        self.failUnless(t1 >= t2)
-        self.failUnless(not t1 != t2)
-        self.failUnless(not t1 < t2)
-        self.failUnless(not t1 > t2)
+        self.assertTrue(t1 <= t2)
+        self.assertTrue(t1 >= t2)
+        self.assertTrue(not t1 != t2)
+        self.assertTrue(not t1 < t2)
+        self.assertTrue(not t1 > t2)
 
         for i in range(len(args)):
             newargs = args[:]
             newargs[i] = args[i] + 1
             t2 = self.theclass(*newargs)   # this is larger than t1
-            self.failUnless(t1 < t2)
-            self.failUnless(t2 > t1)
-            self.failUnless(t1 <= t2)
-            self.failUnless(t2 >= t1)
-            self.failUnless(t1 != t2)
-            self.failUnless(t2 != t1)
-            self.failUnless(not t1 == t2)
-            self.failUnless(not t2 == t1)
-            self.failUnless(not t1 > t2)
-            self.failUnless(not t2 < t1)
-            self.failUnless(not t1 >= t2)
-            self.failUnless(not t2 <= t1)
+            self.assertTrue(t1 < t2)
+            self.assertTrue(t2 > t1)
+            self.assertTrue(t1 <= t2)
+            self.assertTrue(t2 >= t1)
+            self.assertTrue(t1 != t2)
+            self.assertTrue(t2 != t1)
+            self.assertTrue(not t1 == t2)
+            self.assertTrue(not t2 == t1)
+            self.assertTrue(not t1 > t2)
+            self.assertTrue(not t2 < t1)
+            self.assertTrue(not t1 >= t2)
+            self.assertTrue(not t2 <= t1)
 
 
     # A helper for timestamp constructor tests.
@@ -1520,7 +1520,7 @@
             if abs(from_timestamp - from_now) <= tolerance:
                 break
             # Else try again a few times.
-        self.failUnless(abs(from_timestamp - from_now) <= tolerance)
+        self.assertTrue(abs(from_timestamp - from_now) <= tolerance)
 
     def test_strptime(self):
         import _strptime
@@ -1689,7 +1689,7 @@
 
         # Verify t -> string -> time identity.
         s = repr(t)
-        self.failUnless(s.startswith('datetime.'))
+        self.assertTrue(s.startswith('datetime.'))
         s = s[9:]
         t2 = eval(s)
         self.assertEqual(t, t2)
@@ -1704,28 +1704,28 @@
         t1 = self.theclass(*args)
         t2 = self.theclass(*args)
         self.assertEqual(t1, t2)
-        self.failUnless(t1 <= t2)
-        self.failUnless(t1 >= t2)
-        self.failUnless(not t1 != t2)
-        self.failUnless(not t1 < t2)
-        self.failUnless(not t1 > t2)
+        self.assertTrue(t1 <= t2)
+        self.assertTrue(t1 >= t2)
+        self.assertTrue(not t1 != t2)
+        self.assertTrue(not t1 < t2)
+        self.assertTrue(not t1 > t2)
 
         for i in range(len(args)):
             newargs = args[:]
             newargs[i] = args[i] + 1
             t2 = self.theclass(*newargs)   # this is larger than t1
-            self.failUnless(t1 < t2)
-            self.failUnless(t2 > t1)
-            self.failUnless(t1 <= t2)
-            self.failUnless(t2 >= t1)
-            self.failUnless(t1 != t2)
-            self.failUnless(t2 != t1)
-            self.failUnless(not t1 == t2)
-            self.failUnless(not t2 == t1)
-            self.failUnless(not t1 > t2)
-            self.failUnless(not t2 < t1)
-            self.failUnless(not t1 >= t2)
-            self.failUnless(not t2 <= t1)
+            self.assertTrue(t1 < t2)
+            self.assertTrue(t2 > t1)
+            self.assertTrue(t1 <= t2)
+            self.assertTrue(t2 >= t1)
+            self.assertTrue(t1 != t2)
+            self.assertTrue(t2 != t1)
+            self.assertTrue(not t1 == t2)
+            self.assertTrue(not t2 == t1)
+            self.assertTrue(not t1 > t2)
+            self.assertTrue(not t2 < t1)
+            self.assertTrue(not t1 >= t2)
+            self.assertTrue(not t2 <= t1)
 
         for badarg in OTHERSTUFF:
             self.assertEqual(t1 == badarg, False)
@@ -1876,10 +1876,10 @@
                          "%s(23, 15)" % name)
 
     def test_resolution_info(self):
-        self.assert_(isinstance(self.theclass.min, self.theclass))
-        self.assert_(isinstance(self.theclass.max, self.theclass))
-        self.assert_(isinstance(self.theclass.resolution, timedelta))
-        self.assert_(self.theclass.max > self.theclass.min)
+        self.assertTrue(isinstance(self.theclass.min, self.theclass))
+        self.assertTrue(isinstance(self.theclass.max, self.theclass))
+        self.assertTrue(isinstance(self.theclass.resolution, timedelta))
+        self.assertTrue(self.theclass.max > self.theclass.min)
 
     def test_pickling(self):
         args = 20, 59, 16, 64**2
@@ -1899,12 +1899,12 @@
 
     def test_bool(self):
         cls = self.theclass
-        self.failUnless(cls(1))
-        self.failUnless(cls(0, 1))
-        self.failUnless(cls(0, 0, 1))
-        self.failUnless(cls(0, 0, 0, 1))
-        self.failUnless(not cls(0))
-        self.failUnless(not cls())
+        self.assertTrue(cls(1))
+        self.assertTrue(cls(0, 1))
+        self.assertTrue(cls(0, 0, 1))
+        self.assertTrue(cls(0, 0, 0, 1))
+        self.assertTrue(not cls(0))
+        self.assertTrue(not cls())
 
     def test_replace(self):
         cls = self.theclass
@@ -2001,7 +2001,7 @@
             def utcoffset(self, dt): pass
         b = BetterTry()
         t = cls(1, 1, 1, tzinfo=b)
-        self.failUnless(t.tzinfo is b)
+        self.assertTrue(t.tzinfo is b)
 
     def test_utc_offset_out_of_bounds(self):
         class Edgy(tzinfo):
@@ -2040,9 +2040,9 @@
         for t in (cls(1, 1, 1),
                   cls(1, 1, 1, tzinfo=None),
                   cls(1, 1, 1, tzinfo=C1())):
-            self.failUnless(t.utcoffset() is None)
-            self.failUnless(t.dst() is None)
-            self.failUnless(t.tzname() is None)
+            self.assertTrue(t.utcoffset() is None)
+            self.assertTrue(t.dst() is None)
+            self.assertTrue(t.tzname() is None)
 
         class C3(tzinfo):
             def utcoffset(self, dt): return timedelta(minutes=-1439)
@@ -2137,7 +2137,7 @@
         self.assertEqual(t.minute, 0)
         self.assertEqual(t.second, 0)
         self.assertEqual(t.microsecond, 0)
-        self.failUnless(t.tzinfo is None)
+        self.assertTrue(t.tzinfo is None)
 
     def test_zones(self):
         est = FixedOffset(-300, "EST", 1)
@@ -2152,25 +2152,25 @@
         self.assertEqual(t1.tzinfo, est)
         self.assertEqual(t2.tzinfo, utc)
         self.assertEqual(t3.tzinfo, met)
-        self.failUnless(t4.tzinfo is None)
+        self.assertTrue(t4.tzinfo is None)
         self.assertEqual(t5.tzinfo, utc)
 
         self.assertEqual(t1.utcoffset(), timedelta(minutes=-300))
         self.assertEqual(t2.utcoffset(), timedelta(minutes=0))
         self.assertEqual(t3.utcoffset(), timedelta(minutes=60))
-        self.failUnless(t4.utcoffset() is None)
+        self.assertTrue(t4.utcoffset() is None)
         self.assertRaises(TypeError, t1.utcoffset, "no args")
 
         self.assertEqual(t1.tzname(), "EST")
         self.assertEqual(t2.tzname(), "UTC")
         self.assertEqual(t3.tzname(), "MET")
-        self.failUnless(t4.tzname() is None)
+        self.assertTrue(t4.tzname() is None)
         self.assertRaises(TypeError, t1.tzname, "no args")
 
         self.assertEqual(t1.dst(), timedelta(minutes=1))
         self.assertEqual(t2.dst(), timedelta(minutes=-2))
         self.assertEqual(t3.dst(), timedelta(minutes=3))
-        self.failUnless(t4.dst() is None)
+        self.assertTrue(t4.dst() is None)
         self.assertRaises(TypeError, t1.dst, "no args")
 
         self.assertEqual(hash(t1), hash(t2))
@@ -2246,7 +2246,7 @@
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
             self.assertEqual(orig, derived)
-            self.failUnless(isinstance(derived.tzinfo, PicklableFixedOffset))
+            self.assertTrue(isinstance(derived.tzinfo, PicklableFixedOffset))
             self.assertEqual(derived.utcoffset(), timedelta(minutes=-300))
             self.assertEqual(derived.tzname(), 'cookie')
 
@@ -2255,20 +2255,20 @@
         cls = self.theclass
 
         t = cls(0, tzinfo=FixedOffset(-300, ""))
-        self.failUnless(t)
+        self.assertTrue(t)
 
         t = cls(5, tzinfo=FixedOffset(-300, ""))
-        self.failUnless(t)
+        self.assertTrue(t)
 
         t = cls(5, tzinfo=FixedOffset(300, ""))
-        self.failUnless(not t)
+        self.assertTrue(not t)
 
         t = cls(23, 59, tzinfo=FixedOffset(23*60 + 59, ""))
-        self.failUnless(not t)
+        self.assertTrue(not t)
 
         # Mostly ensuring this doesn't overflow internally.
         t = cls(0, tzinfo=FixedOffset(23*60 + 59, ""))
-        self.failUnless(t)
+        self.assertTrue(t)
 
         # But this should yield a value error -- the utcoffset is bogus.
         t = cls(0, tzinfo=FixedOffset(24*60, ""))
@@ -2302,13 +2302,13 @@
         # Ensure we can get rid of a tzinfo.
         self.assertEqual(base.tzname(), "+100")
         base2 = base.replace(tzinfo=None)
-        self.failUnless(base2.tzinfo is None)
-        self.failUnless(base2.tzname() is None)
+        self.assertTrue(base2.tzinfo is None)
+        self.assertTrue(base2.tzname() is None)
 
         # Ensure we can add one.
         base3 = base2.replace(tzinfo=z100)
         self.assertEqual(base, base3)
-        self.failUnless(base.tzinfo is base3.tzinfo)
+        self.assertTrue(base.tzinfo is base3.tzinfo)
 
         # Out of bounds.
         base = cls(1)
@@ -2345,7 +2345,7 @@
 
         # But if they're not identical, it isn't ignored.
         t2 = t2.replace(tzinfo=Varies())
-        self.failUnless(t1 < t2)  # t1's offset counter still going up
+        self.assertTrue(t1 < t2)  # t1's offset counter still going up
 
     def test_subclass_timetz(self):
 
@@ -2401,9 +2401,9 @@
                            tzinfo=FixedOffset(-1439, ""))
 
         # Make sure those compare correctly, and w/o overflow.
-        self.failUnless(t1 < t2)
-        self.failUnless(t1 != t2)
-        self.failUnless(t2 > t1)
+        self.assertTrue(t1 < t2)
+        self.assertTrue(t1 != t2)
+        self.assertTrue(t2 > t1)
 
         self.assertEqual(t1, t1)
         self.assertEqual(t2, t2)
@@ -2415,21 +2415,21 @@
 
         # Change t1 not to subtract a minute, and t1 should be larger.
         t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(0, ""))
-        self.failUnless(t1 > t2)
+        self.assertTrue(t1 > t2)
 
         # Change t1 to subtract 2 minutes, and t1 should be smaller.
         t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(2, ""))
-        self.failUnless(t1 < t2)
+        self.assertTrue(t1 < t2)
 
         # Back to the original t1, but make seconds resolve it.
         t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(1, ""),
                            second=1)
-        self.failUnless(t1 > t2)
+        self.assertTrue(t1 > t2)
 
         # Likewise, but make microseconds resolve it.
         t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(1, ""),
                            microsecond=1)
-        self.failUnless(t1 > t2)
+        self.assertTrue(t1 > t2)
 
         # Make t2 naive and it should fail.
         t2 = self.theclass.min
@@ -2473,7 +2473,7 @@
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
             self.assertEqual(orig, derived)
-            self.failUnless(isinstance(derived.tzinfo,
+            self.assertTrue(isinstance(derived.tzinfo,
                             PicklableFixedOffset))
             self.assertEqual(derived.utcoffset(), timedelta(minutes=-300))
             self.assertEqual(derived.tzname(), 'cookie')
@@ -2544,7 +2544,7 @@
         tz55 = FixedOffset(-330, "west 5:30")
         timeaware = now.time().replace(tzinfo=tz55)
         nowaware = self.theclass.combine(now.date(), timeaware)
-        self.failUnless(nowaware.tzinfo is tz55)
+        self.assertTrue(nowaware.tzinfo is tz55)
         self.assertEqual(nowaware.timetz(), timeaware)
 
         # Can't mix aware and non-aware.
@@ -2563,15 +2563,15 @@
         # Adding a delta should preserve tzinfo.
         delta = timedelta(weeks=1, minutes=12, microseconds=5678)
         nowawareplus = nowaware + delta
-        self.failUnless(nowaware.tzinfo is tz55)
+        self.assertTrue(nowaware.tzinfo is tz55)
         nowawareplus2 = delta + nowaware
-        self.failUnless(nowawareplus2.tzinfo is tz55)
+        self.assertTrue(nowawareplus2.tzinfo is tz55)
         self.assertEqual(nowawareplus, nowawareplus2)
 
         # that - delta should be what we started with, and that - what we
         # started with should be delta.
         diff = nowawareplus - delta
-        self.failUnless(diff.tzinfo is tz55)
+        self.assertTrue(diff.tzinfo is tz55)
         self.assertEqual(nowaware, diff)
         self.assertRaises(TypeError, lambda: delta - nowawareplus)
         self.assertEqual(nowawareplus - nowaware, delta)
@@ -2580,7 +2580,7 @@
         tzr = FixedOffset(random.randrange(-1439, 1440), "randomtimezone")
         # Attach it to nowawareplus.
         nowawareplus = nowawareplus.replace(tzinfo=tzr)
-        self.failUnless(nowawareplus.tzinfo is tzr)
+        self.assertTrue(nowawareplus.tzinfo is tzr)
         # Make sure the difference takes the timezone adjustments into account.
         got = nowaware - nowawareplus
         # Expected:  (nowaware base - nowaware offset) -
@@ -2607,7 +2607,7 @@
         off42 = FixedOffset(42, "42")
         another = meth(off42)
         again = meth(tz=off42)
-        self.failUnless(another.tzinfo is again.tzinfo)
+        self.assertTrue(another.tzinfo is again.tzinfo)
         self.assertEqual(another.utcoffset(), timedelta(minutes=42))
         # Bad argument with and w/o naming the keyword.
         self.assertRaises(TypeError, meth, 16)
@@ -2624,7 +2624,7 @@
         utc = FixedOffset(0, "utc", 0)
         for dummy in range(3):
             now = datetime.now(weirdtz)
-            self.failUnless(now.tzinfo is weirdtz)
+            self.assertTrue(now.tzinfo is weirdtz)
             utcnow = datetime.utcnow().replace(tzinfo=utc)
             now2 = utcnow.astimezone(weirdtz)
             if abs(now - now2) < timedelta(seconds=30):
@@ -2645,7 +2645,7 @@
         off42 = FixedOffset(42, "42")
         another = meth(ts, off42)
         again = meth(ts, tz=off42)
-        self.failUnless(another.tzinfo is again.tzinfo)
+        self.assertTrue(another.tzinfo is again.tzinfo)
         self.assertEqual(another.utcoffset(), timedelta(minutes=42))
         # Bad argument with and w/o naming the keyword.
         self.assertRaises(TypeError, meth, ts, 16)
@@ -2840,13 +2840,13 @@
         # Ensure we can get rid of a tzinfo.
         self.assertEqual(base.tzname(), "+100")
         base2 = base.replace(tzinfo=None)
-        self.failUnless(base2.tzinfo is None)
-        self.failUnless(base2.tzname() is None)
+        self.assertTrue(base2.tzinfo is None)
+        self.assertTrue(base2.tzname() is None)
 
         # Ensure we can add one.
         base3 = base2.replace(tzinfo=z100)
         self.assertEqual(base, base3)
-        self.failUnless(base.tzinfo is base3.tzinfo)
+        self.assertTrue(base.tzinfo is base3.tzinfo)
 
         # Out of bounds.
         base = cls(2000, 2, 29)
@@ -2859,20 +2859,20 @@
         fm5h = FixedOffset(-timedelta(hours=5), "m300")
 
         dt = self.theclass.now(tz=f44m)
-        self.failUnless(dt.tzinfo is f44m)
+        self.assertTrue(dt.tzinfo is f44m)
         # Replacing with degenerate tzinfo raises an exception.
         self.assertRaises(ValueError, dt.astimezone, fnone)
         # Ditto with None tz.
         self.assertRaises(TypeError, dt.astimezone, None)
         # Replacing with same tzinfo makes no change.
         x = dt.astimezone(dt.tzinfo)
-        self.failUnless(x.tzinfo is f44m)
+        self.assertTrue(x.tzinfo is f44m)
         self.assertEqual(x.date(), dt.date())
         self.assertEqual(x.time(), dt.time())
 
         # Replacing with different tzinfo does adjust.
         got = dt.astimezone(fm5h)
-        self.failUnless(got.tzinfo is fm5h)
+        self.assertTrue(got.tzinfo is fm5h)
         self.assertEqual(got.utcoffset(), timedelta(hours=-5))
         expected = dt - dt.utcoffset()  # in effect, convert to UTC
         expected += fm5h.utcoffset(dt)  # and from there to local time
@@ -2880,7 +2880,7 @@
         self.assertEqual(got.date(), expected.date())
         self.assertEqual(got.time(), expected.time())
         self.assertEqual(got.timetz(), expected.timetz())
-        self.failUnless(got.tzinfo is expected.tzinfo)
+        self.assertTrue(got.tzinfo is expected.tzinfo)
         self.assertEqual(got, expected)
 
     def test_aware_subtract(self):
@@ -2955,7 +2955,7 @@
 
         # But if they're not identical, it isn't ignored.
         t2 = t2.replace(tzinfo=Varies())
-        self.failUnless(t1 < t2)  # t1's offset counter still going up
+        self.assertTrue(t1 < t2)  # t1's offset counter still going up
 
     def test_subclass_datetimetz(self):
 
@@ -3306,10 +3306,10 @@
         # type comparison, despite that datetime is a subclass of date.
         as_date = date.today()
         as_datetime = datetime.combine(as_date, time())
-        self.assert_(as_date != as_datetime)
-        self.assert_(as_datetime != as_date)
-        self.assert_(not as_date == as_datetime)
-        self.assert_(not as_datetime == as_date)
+        self.assertTrue(as_date != as_datetime)
+        self.assertTrue(as_datetime != as_date)
+        self.assertTrue(not as_date == as_datetime)
+        self.assertTrue(not as_datetime == as_date)
         self.assertRaises(TypeError, lambda: as_date < as_datetime)
         self.assertRaises(TypeError, lambda: as_datetime < as_date)
         self.assertRaises(TypeError, lambda: as_date <= as_datetime)
diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py
index 35d12e4..818be45 100644
--- a/Lib/test/test_dbm.py
+++ b/Lib/test/test_dbm.py
@@ -57,7 +57,7 @@
         return keys
 
     def test_error(self):
-        self.assert_(issubclass(self.module.error, IOError))
+        self.assertTrue(issubclass(self.module.error, IOError))
 
     def test_anydbm_not_existing(self):
         self.assertRaises(dbm.error, dbm.open, _fname)
@@ -154,9 +154,9 @@
             self.d[k] = v
         self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a))
         for k, v in a:
-            self.assert_(k in self.d)
+            self.assertTrue(k in self.d)
             self.assertEqual(self.d[k], v)
-        self.assert_(b'xxx' not in self.d)
+        self.assertTrue(b'xxx' not in self.d)
         self.assertRaises(KeyError, lambda: self.d[b'xxx'])
         self.d.close()
 
diff --git a/Lib/test/test_dbm_dumb.py b/Lib/test/test_dbm_dumb.py
index e2964aa..956eec6 100644
--- a/Lib/test/test_dbm_dumb.py
+++ b/Lib/test/test_dbm_dumb.py
@@ -118,7 +118,7 @@
         f['1'] = 'a'
         f.close()
         f = dumbdbm.open(_fname, 'r')
-        self.assert_('\u00fc' in f)
+        self.assertTrue('\u00fc' in f)
         self.assertEqual(f['\u00fc'.encode('utf-8')],
                          self._dict['\u00fc'.encode('utf-8')])
         self.assertEqual(f[b'1'], b'a')
diff --git a/Lib/test/test_dbm_gnu.py b/Lib/test/test_dbm_gnu.py
index 857aeb1..2173b92 100755
--- a/Lib/test/test_dbm_gnu.py
+++ b/Lib/test/test_dbm_gnu.py
@@ -24,11 +24,11 @@
         self.g[b'bytes'] = b'data'
         key_set = set(self.g.keys())
         self.assertEqual(key_set, set([b'a', b'bytes', b'12345678910']))
-        self.assert_(b'a' in self.g)
+        self.assertTrue(b'a' in self.g)
         self.assertEqual(self.g[b'bytes'], b'data')
         key = self.g.firstkey()
         while key:
-            self.assert_(key in key_set)
+            self.assertTrue(key in key_set)
             key_set.remove(key)
             key = self.g.nextkey(key)
         self.assertRaises(KeyError, lambda: self.g['xxx'])
@@ -66,7 +66,7 @@
 
         self.g['x'] = 'x' * 10000
         size1 = os.path.getsize(filename)
-        self.assert_(size0 < size1)
+        self.assertTrue(size0 < size1)
 
         del self.g['x']
         # 'size' is supposed to be the same even after deleting an entry.
@@ -74,7 +74,7 @@
 
         self.g.reorganize()
         size2 = os.path.getsize(filename)
-        self.assert_(size1 > size2 >= size0)
+        self.assertTrue(size1 > size2 >= size0)
 
 
 def test_main():
diff --git a/Lib/test/test_dbm_ndbm.py b/Lib/test/test_dbm_ndbm.py
index c5e968f..141d4b3 100755
--- a/Lib/test/test_dbm_ndbm.py
+++ b/Lib/test/test_dbm_ndbm.py
@@ -19,12 +19,12 @@
 
     def test_keys(self):
         self.d = dbm.ndbm.open(self.filename, 'c')
-        self.assert_(self.d.keys() == [])
+        self.assertTrue(self.d.keys() == [])
         self.d['a'] = 'b'
         self.d[b'bytes'] = b'data'
         self.d['12345678910'] = '019237410982340912840198242'
         self.d.keys()
-        self.assert_(b'a' in self.d)
+        self.assertTrue(b'a' in self.d)
         self.assertEqual(self.d[b'bytes'], b'data')
         self.d.close()
 
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 01deeed..927fd1a 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -504,7 +504,7 @@
 
         # from int
         d = nc.create_decimal(456)
-        self.failUnless(isinstance(d, Decimal))
+        self.assertTrue(isinstance(d, Decimal))
         self.assertEqual(nc.create_decimal(45678),
                          nc.create_decimal('457E+2'))
 
@@ -1056,12 +1056,12 @@
         f = Decimal('2')
         for x, y in [(n, n), (n, i), (i, n), (n, f), (f, n),
                      (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)]:
-            self.assert_(x != y)
-            self.assert_(not (x == y))
-            self.assert_(not (x < y))
-            self.assert_(not (x <= y))
-            self.assert_(not (x > y))
-            self.assert_(not (x >= y))
+            self.assertTrue(x != y)
+            self.assertTrue(not (x == y))
+            self.assertTrue(not (x < y))
+            self.assertTrue(not (x <= y))
+            self.assertTrue(not (x > y))
+            self.assertTrue(not (x >= y))
 
 # The following are two functions used to test threading in the next class
 
@@ -1134,18 +1134,18 @@
         dc = Decimal('45')
 
         #two Decimals
-        self.failUnless(dc > da)
-        self.failUnless(dc >= da)
-        self.failUnless(da < dc)
-        self.failUnless(da <= dc)
+        self.assertTrue(dc > da)
+        self.assertTrue(dc >= da)
+        self.assertTrue(da < dc)
+        self.assertTrue(da <= dc)
         self.assertEqual(da, db)
-        self.failUnless(da != dc)
-        self.failUnless(da <= db)
-        self.failUnless(da >= db)
+        self.assertTrue(da != dc)
+        self.assertTrue(da <= db)
+        self.assertTrue(da >= db)
 
         #a Decimal and an int
-        self.failUnless(dc > 23)
-        self.failUnless(23 < dc)
+        self.assertTrue(dc > 23)
+        self.assertTrue(23 < dc)
         self.assertEqual(dc, 45)
 
         #a Decimal and uncomparable
@@ -1206,8 +1206,8 @@
         #the same hash that to an int
         self.assertEqual(hash(Decimal(23)), hash(23))
         self.assertRaises(TypeError, hash, Decimal('NaN'))
-        self.assert_(hash(Decimal('Inf')))
-        self.assert_(hash(Decimal('-Inf')))
+        self.assertTrue(hash(Decimal('Inf')))
+        self.assertTrue(hash(Decimal('-Inf')))
 
         # check that the value of the hash doesn't depend on the
         # current context (issue #1757)
@@ -1234,22 +1234,22 @@
         l2 = 28
 
         #between Decimals
-        self.failUnless(min(d1,d2) is d1)
-        self.failUnless(min(d2,d1) is d1)
-        self.failUnless(max(d1,d2) is d2)
-        self.failUnless(max(d2,d1) is d2)
+        self.assertTrue(min(d1,d2) is d1)
+        self.assertTrue(min(d2,d1) is d1)
+        self.assertTrue(max(d1,d2) is d2)
+        self.assertTrue(max(d2,d1) is d2)
 
         #between Decimal and long
-        self.failUnless(min(d1,l2) is d1)
-        self.failUnless(min(l2,d1) is d1)
-        self.failUnless(max(l1,d2) is d2)
-        self.failUnless(max(d2,l1) is d2)
+        self.assertTrue(min(d1,l2) is d1)
+        self.assertTrue(min(l2,d1) is d1)
+        self.assertTrue(max(l1,d2) is d2)
+        self.assertTrue(max(d2,l1) is d2)
 
     def test_as_nonzero(self):
         #as false
-        self.failIf(Decimal(0))
+        self.assertFalse(Decimal(0))
         #as true
-        self.failUnless(Decimal('0.372'))
+        self.assertTrue(Decimal('0.372'))
 
     def test_tostring_methods(self):
         #Test str and repr methods.
@@ -1519,10 +1519,10 @@
 class DecimalPythonAPItests(unittest.TestCase):
 
     def test_abc(self):
-        self.assert_(issubclass(Decimal, numbers.Number))
-        self.assert_(not issubclass(Decimal, numbers.Real))
-        self.assert_(isinstance(Decimal(0), numbers.Number))
-        self.assert_(not isinstance(Decimal(0), numbers.Real))
+        self.assertTrue(issubclass(Decimal, numbers.Number))
+        self.assertTrue(not issubclass(Decimal, numbers.Real))
+        self.assertTrue(isinstance(Decimal(0), numbers.Number))
+        self.assertTrue(not isinstance(Decimal(0), numbers.Real))
 
     def test_pickle(self):
         d = Decimal('-3.141590000')
@@ -1561,9 +1561,9 @@
                 '0.1000000000000000055511151231257827021181583404541015625')
         bigint = 12345678901234567890123456789
         self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint))
-        self.assert_(MyDecimal.from_float(float('nan')).is_qnan())
-        self.assert_(MyDecimal.from_float(float('inf')).is_infinite())
-        self.assert_(MyDecimal.from_float(float('-inf')).is_infinite())
+        self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan())
+        self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite())
+        self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite())
         self.assertEqual(str(MyDecimal.from_float(float('nan'))),
                          str(Decimal('NaN')))
         self.assertEqual(str(MyDecimal.from_float(float('inf'))),
@@ -1610,8 +1610,8 @@
             self.assertEqual(v1, v2)
 
     def test_equality_with_other_types(self):
-        self.assert_(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}])
-        self.assert_(Decimal(10) not in ['a', 1.0, (1,2), {}])
+        self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}])
+        self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}])
 
     def test_copy(self):
         # All copies should be deep
@@ -1631,9 +1631,9 @@
         with localcontext() as enter_ctx:
             set_ctx = getcontext()
         final_ctx = getcontext()
-        self.assert_(orig_ctx is final_ctx, 'did not restore context correctly')
-        self.assert_(orig_ctx is not set_ctx, 'did not copy the context')
-        self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
+        self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly')
+        self.assertTrue(orig_ctx is not set_ctx, 'did not copy the context')
+        self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
     def test_localcontextarg(self):
         # Use a copy of the supplied context in the block
@@ -1642,10 +1642,10 @@
         with localcontext(new_ctx) as enter_ctx:
             set_ctx = getcontext()
         final_ctx = getcontext()
-        self.assert_(orig_ctx is final_ctx, 'did not restore context correctly')
-        self.assert_(set_ctx.prec == new_ctx.prec, 'did not set correct context')
-        self.assert_(new_ctx is not set_ctx, 'did not copy the context')
-        self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
+        self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly')
+        self.assertTrue(set_ctx.prec == new_ctx.prec, 'did not set correct context')
+        self.assertTrue(new_ctx is not set_ctx, 'did not copy the context')
+        self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
 class ContextFlags(unittest.TestCase):
     def test_flags_irrelevant(self):
diff --git a/Lib/test/test_defaultdict.py b/Lib/test/test_defaultdict.py
index 76fc6a6..e5a9bd5 100644
--- a/Lib/test/test_defaultdict.py
+++ b/Lib/test/test_defaultdict.py
@@ -25,21 +25,21 @@
         d1[13]
         d1[14]
         self.assertEqual(d1, {12: [42, 24], 13: [], 14: []})
-        self.assert_(d1[12] is not d1[13] is not d1[14])
+        self.assertTrue(d1[12] is not d1[13] is not d1[14])
         d2 = defaultdict(list, foo=1, bar=2)
         self.assertEqual(d2.default_factory, list)
         self.assertEqual(d2, {"foo": 1, "bar": 2})
         self.assertEqual(d2["foo"], 1)
         self.assertEqual(d2["bar"], 2)
         self.assertEqual(d2[42], [])
-        self.assert_("foo" in d2)
-        self.assert_("foo" in d2.keys())
-        self.assert_("bar" in d2)
-        self.assert_("bar" in d2.keys())
-        self.assert_(42 in d2)
-        self.assert_(42 in d2.keys())
-        self.assert_(12 not in d2)
-        self.assert_(12 not in d2.keys())
+        self.assertTrue("foo" in d2)
+        self.assertTrue("foo" in d2.keys())
+        self.assertTrue("bar" in d2)
+        self.assertTrue("bar" in d2.keys())
+        self.assertTrue(42 in d2)
+        self.assertTrue(42 in d2.keys())
+        self.assertTrue(12 not in d2)
+        self.assertTrue(12 not in d2.keys())
         d2.default_factory = None
         self.assertEqual(d2.default_factory, None)
         try:
@@ -69,7 +69,7 @@
         self.assertEqual(repr(d2), "defaultdict(<class 'int'>, {12: 42})")
         def foo(): return 43
         d3 = defaultdict(foo)
-        self.assert_(d3.default_factory is foo)
+        self.assertTrue(d3.default_factory is foo)
         d3[13]
         self.assertEqual(repr(d3), "defaultdict(%s, {13: 43})" % repr(foo))
 
@@ -134,7 +134,7 @@
         d2 = copy.deepcopy(d1)
         self.assertEqual(d2.default_factory, foobar)
         self.assertEqual(d2, d1)
-        self.assert_(d1[1] is not d2[1])
+        self.assertTrue(d1[1] is not d2[1])
         d1.default_factory = list
         d2 = copy.deepcopy(d1)
         self.assertEqual(d2.default_factory, list)
@@ -157,7 +157,7 @@
             def _factory(self):
                 return []
         d = sub()
-        self.assert_(repr(d).startswith(
+        self.assertTrue(repr(d).startswith(
             "defaultdict(<bound method sub._factory of defaultdict(..."))
 
         # NOTE: printing a subclass of a builtin type does not call its
diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index fab5a7c..1a03188 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -188,9 +188,9 @@
             self.assertEqual(len(d), n-i)
             j = random.randrange(-len(d), len(d))
             val = d[j]
-            self.assert_(val in d)
+            self.assertTrue(val in d)
             del d[j]
-            self.assert_(val not in d)
+            self.assertTrue(val not in d)
         self.assertEqual(len(d), 0)
 
     def test_rotate(self):
@@ -291,7 +291,7 @@
         self.assertRaises(RuntimeError, d.remove, 'c')
         for x, y in zip(d, e):
             # verify that original order and values are retained.
-            self.assert_(x is y)
+            self.assertTrue(x is y)
 
         # Handle evil mutator
         for match in (True, False):
@@ -305,7 +305,7 @@
         e = eval(repr(d))
         self.assertEqual(list(d), list(e))
         d.append(d)
-        self.assert_('...' in repr(d))
+        self.assertTrue('...' in repr(d))
 
     def test_print(self):
         d = deque(range(200))
@@ -461,7 +461,7 @@
             obj.x = iter(container)
             del obj, container
             gc.collect()
-            self.assert_(ref() is None, "Cycle was not collected")
+            self.assertTrue(ref() is None, "Cycle was not collected")
 
 class TestVariousIteratorArgs(unittest.TestCase):
 
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 5c50571..b3ca89a 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -387,12 +387,12 @@
 
     def test_python_dicts(self):
         # Testing Python subclass of dict...
-        self.assert_(issubclass(dict, dict))
-        self.assert_(isinstance({}, dict))
+        self.assertTrue(issubclass(dict, dict))
+        self.assertTrue(isinstance({}, dict))
         d = dict()
         self.assertEqual(d, {})
-        self.assert_(d.__class__ is dict)
-        self.assert_(isinstance(d, dict))
+        self.assertTrue(d.__class__ is dict)
+        self.assertTrue(isinstance(d, dict))
         class C(dict):
             state = -1
             def __init__(self_local, *a, **kw):
@@ -405,13 +405,13 @@
             def __getitem__(self, key):
                 return self.get(key, 0)
             def __setitem__(self_local, key, value):
-                self.assert_(isinstance(key, type(0)))
+                self.assertTrue(isinstance(key, type(0)))
                 dict.__setitem__(self_local, key, value)
             def setstate(self, state):
                 self.state = state
             def getstate(self):
                 return self.state
-        self.assert_(issubclass(C, dict))
+        self.assertTrue(issubclass(C, dict))
         a1 = C(12)
         self.assertEqual(a1.state, 12)
         a2 = C(foo=1, bar=2)
@@ -504,7 +504,7 @@
                 return 42
         self.assertEqual(C.name, 'C')
         self.assertEqual(C.bases, ())
-        self.assert_('spam' in C.dict)
+        self.assertTrue('spam' in C.dict)
         c = C()
         self.assertEqual(c.spam(), 42)
 
@@ -569,7 +569,7 @@
             def _set_x(self, x):
                 self.__x = -x
         a = A()
-        self.assert_(not hasattr(a, "x"))
+        self.assertTrue(not hasattr(a, "x"))
         a.x = 12
         self.assertEqual(a.x, 12)
         self.assertEqual(a._A__x, -12)
@@ -960,7 +960,7 @@
         x = C()
         x.foo = 5
         self.assertEqual(x.foo, 5)
-        self.assert_(type(slots[0]) is str)
+        self.assertTrue(type(slots[0]) is str)
         # this used to leak references
         try:
             class C(object):
@@ -1049,7 +1049,7 @@
         class D(object):
             __slots__ = ["__dict__"]
         a = D()
-        self.assert_(hasattr(a, "__dict__"))
+        self.assertTrue(hasattr(a, "__dict__"))
         self.assertFalse(hasattr(a, "__weakref__"))
         a.foo = 42
         self.assertEqual(a.__dict__, {"foo": 42})
@@ -1057,7 +1057,7 @@
         class W(object):
             __slots__ = ["__weakref__"]
         a = W()
-        self.assert_(hasattr(a, "__weakref__"))
+        self.assertTrue(hasattr(a, "__weakref__"))
         self.assertFalse(hasattr(a, "__dict__"))
         try:
             a.foo = 42
@@ -1069,16 +1069,16 @@
         class C1(W, D):
             __slots__ = []
         a = C1()
-        self.assert_(hasattr(a, "__dict__"))
-        self.assert_(hasattr(a, "__weakref__"))
+        self.assertTrue(hasattr(a, "__dict__"))
+        self.assertTrue(hasattr(a, "__weakref__"))
         a.foo = 42
         self.assertEqual(a.__dict__, {"foo": 42})
 
         class C2(D, W):
             __slots__ = []
         a = C2()
-        self.assert_(hasattr(a, "__dict__"))
-        self.assert_(hasattr(a, "__weakref__"))
+        self.assertTrue(hasattr(a, "__dict__"))
+        self.assertTrue(hasattr(a, "__weakref__"))
         a.foo = 42
         self.assertEqual(a.__dict__, {"foo": 42})
 
@@ -1094,7 +1094,7 @@
         MyABC.register(Unrelated)
 
         u = Unrelated()
-        self.assert_(isinstance(u, MyABC))
+        self.assertTrue(isinstance(u, MyABC))
 
         # This used to crash
         self.assertRaises(TypeError, MyABC.a.__set__, u, 3)
@@ -1350,7 +1350,7 @@
         class E: # *not* subclassing from C
             foo = C.foo
         self.assertEqual(E().foo.__func__, C.foo) # i.e., unbound
-        self.assert_(repr(C.foo.__get__(C())).startswith("<bound method "))
+        self.assertTrue(repr(C.foo.__get__(C())).startswith("<bound method "))
 
     def test_compattr(self):
         # Testing computed attributes...
@@ -1537,7 +1537,7 @@
         class E(object):
             foo = C.foo
         self.assertEqual(E().foo.__func__, C.foo) # i.e., unbound
-        self.assert_(repr(C.foo.__get__(C(1))).startswith("<bound method "))
+        self.assertTrue(repr(C.foo.__get__(C(1))).startswith("<bound method "))
 
     def test_special_method_lookup(self):
         # The lookup of special methods bypasses __getattr__ and
@@ -1650,21 +1650,21 @@
                 raise IndexError
         c1 = C()
         c2 = C()
-        self.assert_(not not c1) # What?
+        self.assertTrue(not not c1) # What?
         self.assertNotEqual(id(c1), id(c2))
         hash(c1)
         hash(c2)
         self.assertEqual(c1, c1)
-        self.assert_(c1 != c2)
-        self.assert_(not c1 != c1)
-        self.assert_(not c1 == c2)
+        self.assertTrue(c1 != c2)
+        self.assertTrue(not c1 != c1)
+        self.assertTrue(not c1 == c2)
         # Note that the module name appears in str/repr, and that varies
         # depending on whether this test is run standalone or from a framework.
-        self.assert_(str(c1).find('C object at ') >= 0)
+        self.assertTrue(str(c1).find('C object at ') >= 0)
         self.assertEqual(str(c1), repr(c1))
-        self.assert_(-1 not in c1)
+        self.assertTrue(-1 not in c1)
         for i in range(10):
-            self.assert_(i in c1)
+            self.assertTrue(i in c1)
         self.assertFalse(10 in c1)
         # Test the default behavior for dynamic classes
         class D(object):
@@ -1673,21 +1673,21 @@
                 raise IndexError
         d1 = D()
         d2 = D()
-        self.assert_(not not d1)
+        self.assertTrue(not not d1)
         self.assertNotEqual(id(d1), id(d2))
         hash(d1)
         hash(d2)
         self.assertEqual(d1, d1)
         self.assertNotEqual(d1, d2)
-        self.assert_(not d1 != d1)
-        self.assert_(not d1 == d2)
+        self.assertTrue(not d1 != d1)
+        self.assertTrue(not d1 == d2)
         # Note that the module name appears in str/repr, and that varies
         # depending on whether this test is run standalone or from a framework.
-        self.assert_(str(d1).find('D object at ') >= 0)
+        self.assertTrue(str(d1).find('D object at ') >= 0)
         self.assertEqual(str(d1), repr(d1))
-        self.assert_(-1 not in d1)
+        self.assertTrue(-1 not in d1)
         for i in range(10):
-            self.assert_(i in d1)
+            self.assertTrue(i in d1)
         self.assertFalse(10 in d1)
         # Test overridden behavior
         class Proxy(object):
@@ -1719,22 +1719,22 @@
         p1 = Proxy(1)
         p_1 = Proxy(-1)
         self.assertFalse(p0)
-        self.assert_(not not p1)
+        self.assertTrue(not not p1)
         self.assertEqual(hash(p0), hash(0))
         self.assertEqual(p0, p0)
         self.assertNotEqual(p0, p1)
-        self.assert_(not p0 != p0)
+        self.assertTrue(not p0 != p0)
         self.assertEqual(not p0, p1)
-        self.assert_(p0 < p1)
-        self.assert_(p0 <= p1)
-        self.assert_(p1 > p0)
-        self.assert_(p1 >= p0)
+        self.assertTrue(p0 < p1)
+        self.assertTrue(p0 <= p1)
+        self.assertTrue(p1 > p0)
+        self.assertTrue(p1 >= p0)
         self.assertEqual(str(p0), "Proxy:0")
         self.assertEqual(repr(p0), "Proxy(0)")
         p10 = Proxy(range(10))
         self.assertFalse(-1 in p10)
         for i in range(10):
-            self.assert_(i in p10)
+            self.assertTrue(i in p10)
         self.assertFalse(10 in p10)
 
     def test_weakrefs(self):
@@ -1755,7 +1755,7 @@
         try:
             weakref.ref(no)
         except TypeError as msg:
-            self.assert_(str(msg).find("weak reference") >= 0)
+            self.assertTrue(str(msg).find("weak reference") >= 0)
         else:
             self.fail("weakref.ref(no) should be illegal")
         class Weak(object):
@@ -1792,18 +1792,18 @@
         self.assertFalse(hasattr(a, "x"))
 
         raw = C.__dict__['x']
-        self.assert_(isinstance(raw, property))
+        self.assertTrue(isinstance(raw, property))
 
         attrs = dir(raw)
-        self.assert_("__doc__" in attrs)
-        self.assert_("fget" in attrs)
-        self.assert_("fset" in attrs)
-        self.assert_("fdel" in attrs)
+        self.assertTrue("__doc__" in attrs)
+        self.assertTrue("fget" in attrs)
+        self.assertTrue("fset" in attrs)
+        self.assertTrue("fdel" in attrs)
 
         self.assertEqual(raw.__doc__, "I'm the x property.")
-        self.assert_(raw.fget is C.__dict__['getx'])
-        self.assert_(raw.fset is C.__dict__['setx'])
-        self.assert_(raw.fdel is C.__dict__['delx'])
+        self.assertTrue(raw.fget is C.__dict__['getx'])
+        self.assertTrue(raw.fset is C.__dict__['setx'])
+        self.assertTrue(raw.fdel is C.__dict__['delx'])
 
         for attr in "__doc__", "fget", "fset", "fdel":
             try:
@@ -1865,7 +1865,7 @@
         self.assertEqual(C.foo.__doc__, "hello")
         self.assertFalse(hasattr(c, "foo"))
         c.foo = -42
-        self.assert_(hasattr(c, '_foo'))
+        self.assertTrue(hasattr(c, '_foo'))
         self.assertEqual(c._foo, 42)
         self.assertEqual(c.foo, 42)
         del c.foo
@@ -2023,12 +2023,12 @@
 
         c = C()
         self.assertEqual(interesting(dir(c)), cstuff)
-        ## self.assert_('__self__' in dir(C.Cmethod))
+        ## self.assertTrue('__self__' in dir(C.Cmethod))
 
         c.cdata = 2
         c.cmethod = lambda self: 0
         self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod'])
-        ## self.assert_('__self__' in dir(c.Cmethod))
+        ## self.assertTrue('__self__' in dir(c.Cmethod))
 
         class A(C):
             Adata = 1
@@ -2036,13 +2036,13 @@
 
         astuff = ['Adata', 'Amethod'] + cstuff
         self.assertEqual(interesting(dir(A)), astuff)
-        ## self.assert_('__self__' in dir(A.Amethod))
+        ## self.assertTrue('__self__' in dir(A.Amethod))
         a = A()
         self.assertEqual(interesting(dir(a)), astuff)
         a.adata = 42
         a.amethod = lambda self: 3
         self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod'])
-        ## self.assert_('__self__' in dir(a.Amethod))
+        ## self.assertTrue('__self__' in dir(a.Amethod))
 
         # Try a module subclass.
         import sys
@@ -2226,13 +2226,13 @@
         a = hexint(12345)
         self.assertEqual(a, 12345)
         self.assertEqual(int(a), 12345)
-        self.assert_(int(a).__class__ is int)
+        self.assertTrue(int(a).__class__ is int)
         self.assertEqual(hash(a), hash(12345))
-        self.assert_((+a).__class__ is int)
-        self.assert_((a >> 0).__class__ is int)
-        self.assert_((a << 0).__class__ is int)
-        self.assert_((hexint(0) << 12).__class__ is int)
-        self.assert_((hexint(0) >> 12).__class__ is int)
+        self.assertTrue((+a).__class__ is int)
+        self.assertTrue((a >> 0).__class__ is int)
+        self.assertTrue((a << 0).__class__ is int)
+        self.assertTrue((hexint(0) << 12).__class__ is int)
+        self.assertTrue((hexint(0) >> 12).__class__ is int)
 
         class octlong(int):
             __slots__ = []
@@ -2252,36 +2252,36 @@
         self.assertEqual(a, 12345)
         self.assertEqual(int(a), 12345)
         self.assertEqual(hash(a), hash(12345))
-        self.assert_(int(a).__class__ is int)
-        self.assert_((+a).__class__ is int)
-        self.assert_((-a).__class__ is int)
-        self.assert_((-octlong(0)).__class__ is int)
-        self.assert_((a >> 0).__class__ is int)
-        self.assert_((a << 0).__class__ is int)
-        self.assert_((a - 0).__class__ is int)
-        self.assert_((a * 1).__class__ is int)
-        self.assert_((a ** 1).__class__ is int)
-        self.assert_((a // 1).__class__ is int)
-        self.assert_((1 * a).__class__ is int)
-        self.assert_((a | 0).__class__ is int)
-        self.assert_((a ^ 0).__class__ is int)
-        self.assert_((a & -1).__class__ is int)
-        self.assert_((octlong(0) << 12).__class__ is int)
-        self.assert_((octlong(0) >> 12).__class__ is int)
-        self.assert_(abs(octlong(0)).__class__ is int)
+        self.assertTrue(int(a).__class__ is int)
+        self.assertTrue((+a).__class__ is int)
+        self.assertTrue((-a).__class__ is int)
+        self.assertTrue((-octlong(0)).__class__ is int)
+        self.assertTrue((a >> 0).__class__ is int)
+        self.assertTrue((a << 0).__class__ is int)
+        self.assertTrue((a - 0).__class__ is int)
+        self.assertTrue((a * 1).__class__ is int)
+        self.assertTrue((a ** 1).__class__ is int)
+        self.assertTrue((a // 1).__class__ is int)
+        self.assertTrue((1 * a).__class__ is int)
+        self.assertTrue((a | 0).__class__ is int)
+        self.assertTrue((a ^ 0).__class__ is int)
+        self.assertTrue((a & -1).__class__ is int)
+        self.assertTrue((octlong(0) << 12).__class__ is int)
+        self.assertTrue((octlong(0) >> 12).__class__ is int)
+        self.assertTrue(abs(octlong(0)).__class__ is int)
 
         # Because octlong overrides __add__, we can't check the absence of +0
         # optimizations using octlong.
         class longclone(int):
             pass
         a = longclone(1)
-        self.assert_((a + 0).__class__ is int)
-        self.assert_((0 + a).__class__ is int)
+        self.assertTrue((a + 0).__class__ is int)
+        self.assertTrue((0 + a).__class__ is int)
 
         # Check that negative clones don't segfault
         a = longclone(-1)
         self.assertEqual(a.__dict__, {})
-        self.assertEqual(int(a), -1)  # self.assert_ PyNumber_Long() copies the sign bit
+        self.assertEqual(int(a), -1)  # self.assertTrue PyNumber_Long() copies the sign bit
 
         class precfloat(float):
             __slots__ = ['prec']
@@ -2293,9 +2293,9 @@
         a = precfloat(12345)
         self.assertEqual(a, 12345.0)
         self.assertEqual(float(a), 12345.0)
-        self.assert_(float(a).__class__ is float)
+        self.assertTrue(float(a).__class__ is float)
         self.assertEqual(hash(a), hash(12345.0))
-        self.assert_((+a).__class__ is float)
+        self.assertTrue((+a).__class__ is float)
 
         class madcomplex(complex):
             def __repr__(self):
@@ -2343,20 +2343,20 @@
             self.assertEqual(v, t)
         a = madtuple((1,2,3,4,5))
         self.assertEqual(tuple(a), (1,2,3,4,5))
-        self.assert_(tuple(a).__class__ is tuple)
+        self.assertTrue(tuple(a).__class__ is tuple)
         self.assertEqual(hash(a), hash((1,2,3,4,5)))
-        self.assert_(a[:].__class__ is tuple)
-        self.assert_((a * 1).__class__ is tuple)
-        self.assert_((a * 0).__class__ is tuple)
-        self.assert_((a + ()).__class__ is tuple)
+        self.assertTrue(a[:].__class__ is tuple)
+        self.assertTrue((a * 1).__class__ is tuple)
+        self.assertTrue((a * 0).__class__ is tuple)
+        self.assertTrue((a + ()).__class__ is tuple)
         a = madtuple(())
         self.assertEqual(tuple(a), ())
-        self.assert_(tuple(a).__class__ is tuple)
-        self.assert_((a + a).__class__ is tuple)
-        self.assert_((a * 0).__class__ is tuple)
-        self.assert_((a * 1).__class__ is tuple)
-        self.assert_((a * 2).__class__ is tuple)
-        self.assert_(a[:].__class__ is tuple)
+        self.assertTrue(tuple(a).__class__ is tuple)
+        self.assertTrue((a + a).__class__ is tuple)
+        self.assertTrue((a * 0).__class__ is tuple)
+        self.assertTrue((a * 1).__class__ is tuple)
+        self.assertTrue((a * 2).__class__ is tuple)
+        self.assertTrue(a[:].__class__ is tuple)
 
         class madstring(str):
             _rev = None
@@ -2378,48 +2378,48 @@
             self.assertEqual(u, s)
         s = madstring("12345")
         self.assertEqual(str(s), "12345")
-        self.assert_(str(s).__class__ is str)
+        self.assertTrue(str(s).__class__ is str)
 
         base = "\x00" * 5
         s = madstring(base)
         self.assertEqual(s, base)
         self.assertEqual(str(s), base)
-        self.assert_(str(s).__class__ is str)
+        self.assertTrue(str(s).__class__ is str)
         self.assertEqual(hash(s), hash(base))
         self.assertEqual({s: 1}[base], 1)
         self.assertEqual({base: 1}[s], 1)
-        self.assert_((s + "").__class__ is str)
+        self.assertTrue((s + "").__class__ is str)
         self.assertEqual(s + "", base)
-        self.assert_(("" + s).__class__ is str)
+        self.assertTrue(("" + s).__class__ is str)
         self.assertEqual("" + s, base)
-        self.assert_((s * 0).__class__ is str)
+        self.assertTrue((s * 0).__class__ is str)
         self.assertEqual(s * 0, "")
-        self.assert_((s * 1).__class__ is str)
+        self.assertTrue((s * 1).__class__ is str)
         self.assertEqual(s * 1, base)
-        self.assert_((s * 2).__class__ is str)
+        self.assertTrue((s * 2).__class__ is str)
         self.assertEqual(s * 2, base + base)
-        self.assert_(s[:].__class__ is str)
+        self.assertTrue(s[:].__class__ is str)
         self.assertEqual(s[:], base)
-        self.assert_(s[0:0].__class__ is str)
+        self.assertTrue(s[0:0].__class__ is str)
         self.assertEqual(s[0:0], "")
-        self.assert_(s.strip().__class__ is str)
+        self.assertTrue(s.strip().__class__ is str)
         self.assertEqual(s.strip(), base)
-        self.assert_(s.lstrip().__class__ is str)
+        self.assertTrue(s.lstrip().__class__ is str)
         self.assertEqual(s.lstrip(), base)
-        self.assert_(s.rstrip().__class__ is str)
+        self.assertTrue(s.rstrip().__class__ is str)
         self.assertEqual(s.rstrip(), base)
         identitytab = {}
-        self.assert_(s.translate(identitytab).__class__ is str)
+        self.assertTrue(s.translate(identitytab).__class__ is str)
         self.assertEqual(s.translate(identitytab), base)
-        self.assert_(s.replace("x", "x").__class__ is str)
+        self.assertTrue(s.replace("x", "x").__class__ is str)
         self.assertEqual(s.replace("x", "x"), base)
-        self.assert_(s.ljust(len(s)).__class__ is str)
+        self.assertTrue(s.ljust(len(s)).__class__ is str)
         self.assertEqual(s.ljust(len(s)), base)
-        self.assert_(s.rjust(len(s)).__class__ is str)
+        self.assertTrue(s.rjust(len(s)).__class__ is str)
         self.assertEqual(s.rjust(len(s)), base)
-        self.assert_(s.center(len(s)).__class__ is str)
+        self.assertTrue(s.center(len(s)).__class__ is str)
         self.assertEqual(s.center(len(s)), base)
-        self.assert_(s.lower().__class__ is str)
+        self.assertTrue(s.lower().__class__ is str)
         self.assertEqual(s.lower(), base)
 
         class madunicode(str):
@@ -2438,47 +2438,47 @@
         base = "12345"
         u = madunicode(base)
         self.assertEqual(str(u), base)
-        self.assert_(str(u).__class__ is str)
+        self.assertTrue(str(u).__class__ is str)
         self.assertEqual(hash(u), hash(base))
         self.assertEqual({u: 1}[base], 1)
         self.assertEqual({base: 1}[u], 1)
-        self.assert_(u.strip().__class__ is str)
+        self.assertTrue(u.strip().__class__ is str)
         self.assertEqual(u.strip(), base)
-        self.assert_(u.lstrip().__class__ is str)
+        self.assertTrue(u.lstrip().__class__ is str)
         self.assertEqual(u.lstrip(), base)
-        self.assert_(u.rstrip().__class__ is str)
+        self.assertTrue(u.rstrip().__class__ is str)
         self.assertEqual(u.rstrip(), base)
-        self.assert_(u.replace("x", "x").__class__ is str)
+        self.assertTrue(u.replace("x", "x").__class__ is str)
         self.assertEqual(u.replace("x", "x"), base)
-        self.assert_(u.replace("xy", "xy").__class__ is str)
+        self.assertTrue(u.replace("xy", "xy").__class__ is str)
         self.assertEqual(u.replace("xy", "xy"), base)
-        self.assert_(u.center(len(u)).__class__ is str)
+        self.assertTrue(u.center(len(u)).__class__ is str)
         self.assertEqual(u.center(len(u)), base)
-        self.assert_(u.ljust(len(u)).__class__ is str)
+        self.assertTrue(u.ljust(len(u)).__class__ is str)
         self.assertEqual(u.ljust(len(u)), base)
-        self.assert_(u.rjust(len(u)).__class__ is str)
+        self.assertTrue(u.rjust(len(u)).__class__ is str)
         self.assertEqual(u.rjust(len(u)), base)
-        self.assert_(u.lower().__class__ is str)
+        self.assertTrue(u.lower().__class__ is str)
         self.assertEqual(u.lower(), base)
-        self.assert_(u.upper().__class__ is str)
+        self.assertTrue(u.upper().__class__ is str)
         self.assertEqual(u.upper(), base)
-        self.assert_(u.capitalize().__class__ is str)
+        self.assertTrue(u.capitalize().__class__ is str)
         self.assertEqual(u.capitalize(), base)
-        self.assert_(u.title().__class__ is str)
+        self.assertTrue(u.title().__class__ is str)
         self.assertEqual(u.title(), base)
-        self.assert_((u + "").__class__ is str)
+        self.assertTrue((u + "").__class__ is str)
         self.assertEqual(u + "", base)
-        self.assert_(("" + u).__class__ is str)
+        self.assertTrue(("" + u).__class__ is str)
         self.assertEqual("" + u, base)
-        self.assert_((u * 0).__class__ is str)
+        self.assertTrue((u * 0).__class__ is str)
         self.assertEqual(u * 0, "")
-        self.assert_((u * 1).__class__ is str)
+        self.assertTrue((u * 1).__class__ is str)
         self.assertEqual(u * 1, base)
-        self.assert_((u * 2).__class__ is str)
+        self.assertTrue((u * 2).__class__ is str)
         self.assertEqual(u * 2, base + base)
-        self.assert_(u[:].__class__ is str)
+        self.assertTrue(u[:].__class__ is str)
         self.assertEqual(u[:], base)
-        self.assert_(u[0:0].__class__ is str)
+        self.assertTrue(u[0:0].__class__ is str)
         self.assertEqual(u[0:0], "")
 
         class sublist(list):
@@ -2597,7 +2597,7 @@
         self.assertEqual(d[cistr('one')], 1)
         self.assertEqual(d[cistr('tWo')], 2)
         self.assertEqual(d[cistr('THrEE')], 3)
-        self.assert_(cistr('ONe') in d)
+        self.assertTrue(cistr('ONe') in d)
         self.assertEqual(d.get(cistr('thrEE')), 3)
 
     def test_classic_comparisons(self):
@@ -2654,13 +2654,13 @@
             for x in 1, 2, 3:
                 for y in 1, 2, 3:
                     for op in "<", "<=", "==", "!=", ">", ">=":
-                        self.assert_(eval("c[x] %s c[y]" % op) ==
+                        self.assertTrue(eval("c[x] %s c[y]" % op) ==
                                      eval("x %s y" % op),
                                      "x=%d, y=%d" % (x, y))
-                        self.assert_(eval("c[x] %s y" % op) ==
+                        self.assertTrue(eval("c[x] %s y" % op) ==
                                      eval("x %s y" % op),
                                      "x=%d, y=%d" % (x, y))
-                        self.assert_(eval("x %s c[y]" % op) ==
+                        self.assertTrue(eval("x %s c[y]" % op) ==
                                      eval("x %s y" % op),
                                      "x=%d, y=%d" % (x, y))
 
@@ -2733,11 +2733,11 @@
             for x in 1, 2, 3:
                 for y in 1, 2, 3:
                     for op in "<", "<=", "==", "!=", ">", ">=":
-                        self.assert_(eval("c[x] %s c[y]" % op) == eval("x %s y" % op),
+                        self.assertTrue(eval("c[x] %s c[y]" % op) == eval("x %s y" % op),
                                "x=%d, y=%d" % (x, y))
-                        self.assert_(eval("c[x] %s y" % op) == eval("x %s y" % op),
+                        self.assertTrue(eval("c[x] %s y" % op) == eval("x %s y" % op),
                                "x=%d, y=%d" % (x, y))
-                        self.assert_(eval("x %s c[y]" % op) == eval("x %s y" % op),
+                        self.assertTrue(eval("x %s c[y]" % op) == eval("x %s y" % op),
                                "x=%d, y=%d" % (x, y))
 
     def test_descrdoc(self):
@@ -2777,9 +2777,9 @@
             for cls2 in C, D, E, F:
                 x = cls()
                 x.__class__ = cls2
-                self.assert_(x.__class__ is cls2)
+                self.assertTrue(x.__class__ is cls2)
                 x.__class__ = cls
-                self.assert_(x.__class__ is cls)
+                self.assertTrue(x.__class__ is cls)
         def cant(x, C):
             try:
                 x.__class__ = C
@@ -2835,11 +2835,11 @@
             x = cls()
             x.a = 1
             x.__class__ = cls2
-            self.assert_(x.__class__ is cls2,
+            self.assertTrue(x.__class__ is cls2,
                    "assigning %r as __class__ for %r silently failed" % (cls2, x))
             self.assertEqual(x.a, 1)
             x.__class__ = cls
-            self.assert_(x.__class__ is cls,
+            self.assertTrue(x.__class__ is cls,
                    "assigning %r as __class__ for %r silently failed" % (cls, x))
             self.assertEqual(x.a, 1)
         for cls in G, J, K, L, M, N, P, R, list, Int:
@@ -3008,7 +3008,7 @@
             for cls in C, C1, C2:
                 s = pickle.dumps(cls, bin)
                 cls2 = pickle.loads(s)
-                self.assert_(cls2 is cls)
+                self.assertTrue(cls2 is cls)
 
             a = C1(1, 2); a.append(42); a.append(24)
             b = C2("hello", "world", 42)
@@ -3038,7 +3038,7 @@
         import copy
         for cls in C, C1, C2:
             cls2 = copy.deepcopy(cls)
-            self.assert_(cls2 is cls)
+            self.assertTrue(cls2 is cls)
 
         a = C1(1, 2); a.append(42); a.append(24)
         b = C2("hello", "world", 42)
@@ -3581,8 +3581,8 @@
             __slots__=()
         if support.check_impl_detail():
             self.assertEqual(C.__basicsize__, B.__basicsize__)
-        self.assert_(hasattr(C, '__dict__'))
-        self.assert_(hasattr(C, '__weakref__'))
+        self.assertTrue(hasattr(C, '__dict__'))
+        self.assertTrue(hasattr(C, '__weakref__'))
         C().x = 2
 
     def test_rmul(self):
@@ -3916,29 +3916,29 @@
             pass
         a = C()
         pa = Proxy(a)
-        self.assert_(isinstance(a, C))  # Baseline
-        self.assert_(isinstance(pa, C)) # Test
+        self.assertTrue(isinstance(a, C))  # Baseline
+        self.assertTrue(isinstance(pa, C)) # Test
         # Test with a classic subclass
         class D(C):
             pass
         a = D()
         pa = Proxy(a)
-        self.assert_(isinstance(a, C))  # Baseline
-        self.assert_(isinstance(pa, C)) # Test
+        self.assertTrue(isinstance(a, C))  # Baseline
+        self.assertTrue(isinstance(pa, C)) # Test
         # Test with a new-style class
         class C(object):
             pass
         a = C()
         pa = Proxy(a)
-        self.assert_(isinstance(a, C))  # Baseline
-        self.assert_(isinstance(pa, C)) # Test
+        self.assertTrue(isinstance(a, C))  # Baseline
+        self.assertTrue(isinstance(pa, C)) # Test
         # Test with a new-style subclass
         class D(C):
             pass
         a = D()
         pa = Proxy(a)
-        self.assert_(isinstance(a, C))  # Baseline
-        self.assert_(isinstance(pa, C)) # Test
+        self.assertTrue(isinstance(a, C))  # Baseline
+        self.assertTrue(isinstance(pa, C)) # Test
 
     def test_proxy_super(self):
         # Testing super() for a proxy object...
@@ -4067,17 +4067,17 @@
         l = []
         self.assertEqual(l.__add__, l.__add__)
         self.assertEqual(l.__add__, [].__add__)
-        self.assert_(l.__add__ != [5].__add__)
-        self.assert_(l.__add__ != l.__mul__)
-        self.assert_(l.__add__.__name__ == '__add__')
+        self.assertTrue(l.__add__ != [5].__add__)
+        self.assertTrue(l.__add__ != l.__mul__)
+        self.assertTrue(l.__add__.__name__ == '__add__')
         if hasattr(l.__add__, '__self__'):
             # CPython
-            self.assert_(l.__add__.__self__ is l)
-            self.assert_(l.__add__.__objclass__ is list)
+            self.assertTrue(l.__add__.__self__ is l)
+            self.assertTrue(l.__add__.__objclass__ is list)
         else:
             # Python implementations where [].__add__ is a normal bound method
-            self.assert_(l.__add__.im_self is l)
-            self.assert_(l.__add__.im_class is list)
+            self.assertTrue(l.__add__.im_self is l)
+            self.assertTrue(l.__add__.im_class is list)
         self.assertEqual(l.__add__.__doc__, list.__add__.__doc__)
         try:
             hash(l.__add__)
diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py
index 1c9bca8..1519689 100644
--- a/Lib/test/test_dict.py
+++ b/Lib/test/test_dict.py
@@ -10,7 +10,7 @@
     def test_constructor(self):
         # calling built-in types without argument must return empty
         self.assertEqual(dict(), {})
-        self.assert_(dict() is not {})
+        self.assertTrue(dict() is not {})
 
     def test_literal_constructor(self):
         # check literal constructor for different sized dicts (to exercise the BUILD_MAP oparg
@@ -24,18 +24,18 @@
             self.assertEqual(eval(dictliteral), dict(items))
 
     def test_bool(self):
-        self.assert_(not {})
-        self.assert_({1: 2})
-        self.assert_(bool({}) is False)
-        self.assert_(bool({1: 2}) is True)
+        self.assertTrue(not {})
+        self.assertTrue({1: 2})
+        self.assertTrue(bool({}) is False)
+        self.assertTrue(bool({1: 2}) is True)
 
     def test_keys(self):
         d = {}
         self.assertEqual(set(d.keys()), set())
         d = {'a': 1, 'b': 2}
         k = d.keys()
-        self.assert_('a' in d)
-        self.assert_('b' in d)
+        self.assertTrue('a' in d)
+        self.assertTrue('b' in d)
         self.assertRaises(TypeError, d.keys, None)
         self.assertEqual(repr(dict(a=1).keys()), "dict_keys(['a'])")
 
@@ -58,12 +58,12 @@
 
     def test_contains(self):
         d = {}
-        self.assert_(not ('a' in d))
-        self.assert_('a' not in d)
+        self.assertTrue(not ('a' in d))
+        self.assertTrue('a' not in d)
         d = {'a': 1, 'b': 2}
-        self.assert_('a' in d)
-        self.assert_('b' in d)
-        self.assert_('c' not in d)
+        self.assertTrue('a' in d)
+        self.assertTrue('b' in d)
+        self.assertTrue('c' not in d)
 
         self.assertRaises(TypeError, d.__contains__)
 
@@ -197,7 +197,7 @@
     def test_fromkeys(self):
         self.assertEqual(dict.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
         d = {}
-        self.assert_(not(d.fromkeys('abc') is d))
+        self.assertTrue(not(d.fromkeys('abc') is d))
         self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
         self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
         self.assertEqual(d.fromkeys([]), {})
@@ -208,14 +208,14 @@
         class dictlike(dict): pass
         self.assertEqual(dictlike.fromkeys('a'), {'a':None})
         self.assertEqual(dictlike().fromkeys('a'), {'a':None})
-        self.assert_(type(dictlike.fromkeys('a')) is dictlike)
-        self.assert_(type(dictlike().fromkeys('a')) is dictlike)
+        self.assertTrue(type(dictlike.fromkeys('a')) is dictlike)
+        self.assertTrue(type(dictlike().fromkeys('a')) is dictlike)
         class mydict(dict):
             def __new__(cls):
                 return collections.UserDict()
         ud = mydict.fromkeys('ab')
         self.assertEqual(ud, {'a':None, 'b':None})
-        self.assert_(isinstance(ud, collections.UserDict))
+        self.assertTrue(isinstance(ud, collections.UserDict))
         self.assertRaises(TypeError, dict.fromkeys)
 
         class Exc(Exception): pass
@@ -252,10 +252,10 @@
 
     def test_get(self):
         d = {}
-        self.assert_(d.get('c') is None)
+        self.assertTrue(d.get('c') is None)
         self.assertEqual(d.get('c', 3), 3)
         d = {'a' : 1, 'b' : 2}
-        self.assert_(d.get('c') is None)
+        self.assertTrue(d.get('c') is None)
         self.assertEqual(d.get('c', 3), 3)
         self.assertEqual(d.get('a'), 1)
         self.assertEqual(d.get('a', 3), 1)
@@ -265,9 +265,9 @@
     def test_setdefault(self):
         # dict.setdefault()
         d = {}
-        self.assert_(d.setdefault('key0') is None)
+        self.assertTrue(d.setdefault('key0') is None)
         d.setdefault('key0', [])
-        self.assert_(d.setdefault('key0') is None)
+        self.assertTrue(d.setdefault('key0') is None)
         d.setdefault('key', []).append(3)
         self.assertEqual(d['key'][0], 3)
         d.setdefault('key', []).append(4)
@@ -309,9 +309,9 @@
                     self.assertEqual(va, int(ka))
                     kb, vb = tb = b.popitem()
                     self.assertEqual(vb, int(kb))
-                    self.assert_(not(copymode < 0 and ta != tb))
-                self.assert_(not a)
-                self.assert_(not b)
+                    self.assertTrue(not(copymode < 0 and ta != tb))
+                self.assertTrue(not a)
+                self.assertTrue(not b)
 
         d = {}
         self.assertRaises(KeyError, d.popitem)
@@ -525,8 +525,8 @@
         d = D({1: 2, 3: 4})
         self.assertEqual(d[1], 2)
         self.assertEqual(d[3], 4)
-        self.assert_(2 not in d)
-        self.assert_(2 not in d.keys())
+        self.assertTrue(2 not in d)
+        self.assertTrue(2 not in d.keys())
         self.assertEqual(d[2], 42)
         class E(dict):
             def __missing__(self, key):
@@ -663,7 +663,7 @@
             obj.x = iter(obj.v)
             del obj, container
             gc.collect()
-            self.assert_(ref() is None, "Cycle was not collected")
+            self.assertTrue(ref() is None, "Cycle was not collected")
 
     def _not_tracked(self, t):
         # Nested containers can take several collections to untrack
diff --git a/Lib/test/test_dictviews.py b/Lib/test/test_dictviews.py
index 34883d2..4fee755 100644
--- a/Lib/test/test_dictviews.py
+++ b/Lib/test/test_dictviews.py
@@ -24,10 +24,10 @@
         self.assertNotEqual(keys, {1, "b"})
         self.assertNotEqual(keys, {1})
         self.assertNotEqual(keys, 42)
-        self.assert_(1 in keys)
-        self.assert_("a" in keys)
-        self.assert_(10 not in keys)
-        self.assert_("Z" not in keys)
+        self.assertTrue(1 in keys)
+        self.assertTrue("a" in keys)
+        self.assertTrue(10 not in keys)
+        self.assertTrue("Z" not in keys)
         self.assertEqual(d.keys(), d.keys())
         e = {1: 11, "a": "def"}
         self.assertEqual(d.keys(), e.keys())
@@ -44,13 +44,13 @@
         self.assertNotEqual(items, {(1, 10), ("a", "def")})
         self.assertNotEqual(items, {(1, 10)})
         self.assertNotEqual(items, 42)
-        self.assert_((1, 10) in items)
-        self.assert_(("a", "ABC") in items)
-        self.assert_((1, 11) not in items)
-        self.assert_(1 not in items)
-        self.assert_(() not in items)
-        self.assert_((1,) not in items)
-        self.assert_((1, 2, 3) not in items)
+        self.assertTrue((1, 10) in items)
+        self.assertTrue(("a", "ABC") in items)
+        self.assertTrue((1, 11) not in items)
+        self.assertTrue(1 not in items)
+        self.assertTrue(() not in items)
+        self.assertTrue((1,) not in items)
+        self.assertTrue((1, 2, 3) not in items)
         self.assertEqual(d.items(), d.items())
         e = d.copy()
         self.assertEqual(d.items(), e.items())
diff --git a/Lib/test/test_docxmlrpc.py b/Lib/test/test_docxmlrpc.py
index bd96e23..7bffa48 100644
--- a/Lib/test/test_docxmlrpc.py
+++ b/Lib/test/test_docxmlrpc.py
@@ -104,7 +104,7 @@
         self.client.request("GET", "/")
         response = self.client.getresponse()
 
-        self.assert_(
+        self.assertTrue(
 b"""<dl><dt><a name="-&lt;lambda&gt;"><strong>&lt;lambda&gt;</strong></a>(x, y)</dt></dl>"""
             in response.read())
 
@@ -118,7 +118,7 @@
         self.client.request("GET", "/")
         response = self.client.getresponse().read()
 
-        self.assert_( # This is ugly ... how can it be made better?
+        self.assertTrue( # This is ugly ... how can it be made better?
 b"""<dl><dt><a name="-add"><strong>add</strong></a>(x, y)</dt><dd><tt>Add&nbsp;two&nbsp;instances&nbsp;together.&nbsp;This&nbsp;follows&nbsp;<a href="http://www.python.org/dev/peps/pep-0008/">PEP008</a>,&nbsp;but&nbsp;has&nbsp;nothing<br>\nto&nbsp;do&nbsp;with&nbsp;<a href="http://www.rfc-editor.org/rfc/rfc1952.txt">RFC1952</a>.&nbsp;Case&nbsp;should&nbsp;matter:&nbsp;pEp008&nbsp;and&nbsp;rFC1952.&nbsp;&nbsp;Things<br>\nthat&nbsp;start&nbsp;with&nbsp;http&nbsp;and&nbsp;ftp&nbsp;should&nbsp;be&nbsp;auto-linked,&nbsp;too:<br>\n<a href="http://google.com">http://google.com</a>.</tt></dd></dl>"""
           in response, response)
 
@@ -131,7 +131,7 @@
         self.client.request("GET", "/")
         response = self.client.getresponse().read()
 
-        self.assert_(
+        self.assertTrue(
 b"""<dl><dt><a name="-system.methodHelp"><strong>system.methodHelp</strong></a>(method_name)</dt><dd><tt><a href="#-system.methodHelp">system.methodHelp</a>(\'add\')&nbsp;=&gt;&nbsp;"Adds&nbsp;two&nbsp;integers&nbsp;together"<br>\n&nbsp;<br>\nReturns&nbsp;a&nbsp;string&nbsp;containing&nbsp;documentation&nbsp;for&nbsp;the&nbsp;specified&nbsp;method.</tt></dd></dl>\n<dl><dt><a name="-system.methodSignature"><strong>system.methodSignature</strong></a>(method_name)</dt><dd><tt><a href="#-system.methodSignature">system.methodSignature</a>(\'add\')&nbsp;=&gt;&nbsp;[double,&nbsp;int,&nbsp;int]<br>\n&nbsp;<br>\nReturns&nbsp;a&nbsp;list&nbsp;describing&nbsp;the&nbsp;signature&nbsp;of&nbsp;the&nbsp;method.&nbsp;In&nbsp;the<br>\nabove&nbsp;example,&nbsp;the&nbsp;add&nbsp;method&nbsp;takes&nbsp;two&nbsp;integers&nbsp;as&nbsp;arguments<br>\nand&nbsp;returns&nbsp;a&nbsp;double&nbsp;result.<br>\n&nbsp;<br>\nThis&nbsp;server&nbsp;does&nbsp;NOT&nbsp;support&nbsp;system.methodSignature.</tt></dd></dl>\n<dl><dt><a name="-test_method"><strong>test_method</strong></a>(arg)</dt><dd><tt>Test&nbsp;method\'s&nbsp;docs.&nbsp;This&nbsp;method&nbsp;truly&nbsp;does&nbsp;very&nbsp;little.</tt></dd></dl>""" in response)
 
     def test_autolink_dotted_methods(self):
@@ -140,7 +140,7 @@
         self.client.request("GET", "/")
         response = self.client.getresponse()
 
-        self.assert_(b"""Try&nbsp;self.<strong>add</strong>,&nbsp;too.""" in
+        self.assertTrue(b"""Try&nbsp;self.<strong>add</strong>,&nbsp;too.""" in
             response.read())
 
 def test_main():
diff --git a/Lib/test/test_dummy_thread.py b/Lib/test/test_dummy_thread.py
index ecac3ee..240b61a 100644
--- a/Lib/test/test_dummy_thread.py
+++ b/Lib/test/test_dummy_thread.py
@@ -24,43 +24,43 @@
 
     def test_initlock(self):
         #Make sure locks start locked
-        self.failUnless(not self.lock.locked(),
+        self.assertTrue(not self.lock.locked(),
                         "Lock object is not initialized unlocked.")
 
     def test_release(self):
         # Test self.lock.release()
         self.lock.acquire()
         self.lock.release()
-        self.failUnless(not self.lock.locked(),
+        self.assertTrue(not self.lock.locked(),
                         "Lock object did not release properly.")
 
     def test_improper_release(self):
         #Make sure release of an unlocked thread raises _thread.error
-        self.failUnlessRaises(_thread.error, self.lock.release)
+        self.assertRaises(_thread.error, self.lock.release)
 
     def test_cond_acquire_success(self):
         #Make sure the conditional acquiring of the lock works.
-        self.failUnless(self.lock.acquire(0),
+        self.assertTrue(self.lock.acquire(0),
                         "Conditional acquiring of the lock failed.")
 
     def test_cond_acquire_fail(self):
         #Test acquiring locked lock returns False
         self.lock.acquire(0)
-        self.failUnless(not self.lock.acquire(0),
+        self.assertTrue(not self.lock.acquire(0),
                         "Conditional acquiring of a locked lock incorrectly "
                          "succeeded.")
 
     def test_uncond_acquire_success(self):
         #Make sure unconditional acquiring of a lock works.
         self.lock.acquire()
-        self.failUnless(self.lock.locked(),
+        self.assertTrue(self.lock.locked(),
                         "Uncondional locking failed.")
 
     def test_uncond_acquire_return_val(self):
         #Make sure that an unconditional locking returns True.
-        self.failUnless(self.lock.acquire(1) is True,
+        self.assertTrue(self.lock.acquire(1) is True,
                         "Unconditional locking did not return True.")
-        self.failUnless(self.lock.acquire() is True)
+        self.assertTrue(self.lock.acquire() is True)
 
     def test_uncond_acquire_blocking(self):
         #Make sure that unconditional acquiring of a locked lock blocks.
@@ -80,7 +80,7 @@
         end_time = int(time.time())
         if support.verbose:
             print("done")
-        self.failUnless((end_time - start_time) >= DELAY,
+        self.assertTrue((end_time - start_time) >= DELAY,
                         "Blocking by unconditional acquiring failed.")
 
 class MiscTests(unittest.TestCase):
@@ -88,18 +88,18 @@
 
     def test_exit(self):
         #Make sure _thread.exit() raises SystemExit
-        self.failUnlessRaises(SystemExit, _thread.exit)
+        self.assertRaises(SystemExit, _thread.exit)
 
     def test_ident(self):
         #Test sanity of _thread.get_ident()
-        self.failUnless(isinstance(_thread.get_ident(), int),
+        self.assertTrue(isinstance(_thread.get_ident(), int),
                         "_thread.get_ident() returned a non-integer")
-        self.failUnless(_thread.get_ident() != 0,
+        self.assertTrue(_thread.get_ident() != 0,
                         "_thread.get_ident() returned 0")
 
     def test_LockType(self):
         #Make sure _thread.LockType is the same type as _thread.allocate_locke()
-        self.failUnless(isinstance(_thread.allocate_lock(), _thread.LockType),
+        self.assertTrue(isinstance(_thread.allocate_lock(), _thread.LockType),
                         "_thread.LockType is not an instance of what is "
                          "returned by _thread.allocate_lock()")
 
@@ -108,13 +108,13 @@
         # should raise KeyboardInterrupt upon completion.
         def call_interrupt():
             _thread.interrupt_main()
-        self.failUnlessRaises(KeyboardInterrupt, _thread.start_new_thread,
+        self.assertRaises(KeyboardInterrupt, _thread.start_new_thread,
                               call_interrupt, tuple())
 
     def test_interrupt_in_main(self):
         # Make sure that if interrupt_main is called in main threat that
         # KeyboardInterrupt is raised instantly.
-        self.failUnlessRaises(KeyboardInterrupt, _thread.interrupt_main)
+        self.assertRaises(KeyboardInterrupt, _thread.interrupt_main)
 
 class ThreadTests(unittest.TestCase):
     """Test thread creation."""
@@ -128,16 +128,16 @@
         testing_queue = queue.Queue(1)
         _thread.start_new_thread(arg_tester, (testing_queue, True, True))
         result = testing_queue.get()
-        self.failUnless(result[0] and result[1],
+        self.assertTrue(result[0] and result[1],
                         "Argument passing for thread creation using tuple failed")
         _thread.start_new_thread(arg_tester, tuple(), {'queue':testing_queue,
                                                        'arg1':True, 'arg2':True})
         result = testing_queue.get()
-        self.failUnless(result[0] and result[1],
+        self.assertTrue(result[0] and result[1],
                         "Argument passing for thread creation using kwargs failed")
         _thread.start_new_thread(arg_tester, (testing_queue, True), {'arg2':True})
         result = testing_queue.get()
-        self.failUnless(result[0] and result[1],
+        self.assertTrue(result[0] and result[1],
                         "Argument passing for thread creation using both tuple"
                         " and kwargs failed")
 
@@ -164,7 +164,7 @@
         time.sleep(DELAY)
         if support.verbose:
             print('done')
-        self.failUnless(testing_queue.qsize() == thread_count,
+        self.assertTrue(testing_queue.qsize() == thread_count,
                         "Not all %s threads executed properly after %s sec." %
                         (thread_count, DELAY))
 
diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py
index ab6bf0b..847b991 100644
--- a/Lib/test/test_epoll.py
+++ b/Lib/test/test_epoll.py
@@ -71,10 +71,10 @@
             ep = select.epoll(16)
         except OSError as e:
             raise AssertionError(str(e))
-        self.assert_(ep.fileno() > 0, ep.fileno())
-        self.assert_(not ep.closed)
+        self.assertTrue(ep.fileno() > 0, ep.fileno())
+        self.assertTrue(not ep.closed)
         ep.close()
-        self.assert_(ep.closed)
+        self.assertTrue(ep.closed)
         self.assertRaises(ValueError, ep.fileno)
 
     def test_badcreate(self):
@@ -141,7 +141,7 @@
         try:
             ep2.poll(1, 4)
         except IOError as e:
-            self.failUnlessEqual(e.args[0], errno.EBADF, e)
+            self.assertEqual(e.args[0], errno.EBADF, e)
         else:
             self.fail("epoll on closed fd didn't raise EBADF")
 
@@ -157,7 +157,7 @@
         now = time.time()
         events = ep.poll(1, 4)
         then = time.time()
-        self.failIf(then - now > 0.1, then - now)
+        self.assertFalse(then - now > 0.1, then - now)
 
         events.sort()
         expected = [(client.fileno(), select.EPOLLOUT),
@@ -165,12 +165,12 @@
         expected.sort()
 
         self.assertEquals(events, expected)
-        self.failIf(then - now > 0.01, then - now)
+        self.assertFalse(then - now > 0.01, then - now)
 
         now = time.time()
         events = ep.poll(timeout=2.1, maxevents=4)
         then = time.time()
-        self.failIf(events)
+        self.assertFalse(events)
 
         client.send(b"Hello!")
         server.send(b"world!!!")
@@ -178,7 +178,7 @@
         now = time.time()
         events = ep.poll(1, 4)
         then = time.time()
-        self.failIf(then - now > 0.01)
+        self.assertFalse(then - now > 0.01)
 
         events.sort()
         expected = [(client.fileno(), select.EPOLLIN | select.EPOLLOUT),
@@ -192,7 +192,7 @@
         now = time.time()
         events = ep.poll(1, 4)
         then = time.time()
-        self.failIf(then - now > 0.01)
+        self.assertFalse(then - now > 0.01)
 
         expected = [(server.fileno(), select.EPOLLOUT)]
         self.assertEquals(events, expected)
@@ -211,7 +211,7 @@
         now = time.time()
         events = ep.poll(1, 4)
         then = time.time()
-        self.failIf(then - now > 0.01)
+        self.assertFalse(then - now > 0.01)
 
         server.close()
         ep.unregister(fd)
diff --git a/Lib/test/test_errno.py b/Lib/test/test_errno.py
index 28425e2..80edcc6 100755
--- a/Lib/test/test_errno.py
+++ b/Lib/test/test_errno.py
@@ -14,13 +14,13 @@
     def test_for_improper_attributes(self):
         # No unexpected attributes should be on the module.
         for error_code in std_c_errors:
-            self.assert_(hasattr(errno, error_code),
+            self.assertTrue(hasattr(errno, error_code),
                             "errno is missing %s" % error_code)
 
     def test_using_errorcode(self):
         # Every key value in errno.errorcode should be on the module.
         for value in errno.errorcode.values():
-            self.assert_(hasattr(errno, value), 'no %s attr in errno' % value)
+            self.assertTrue(hasattr(errno, value), 'no %s attr in errno' % value)
 
 
 class ErrorcodeTests(unittest.TestCase):
@@ -28,7 +28,7 @@
     def test_attributes_in_errorcode(self):
         for attribute in errno.__dict__.keys():
             if attribute.isupper():
-                self.assert_(getattr(errno, attribute) in errno.errorcode,
+                self.assertTrue(getattr(errno, attribute) in errno.errorcode,
                              'no %s attr in errno.errorcode' % attribute)
 
 
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 8bb2079..89e6ebb 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -155,7 +155,7 @@
                 exc, err, tb = sys.exc_info()
                 co = tb.tb_frame.f_code
                 self.assertEquals(co.co_name, "test_capi1")
-                self.assert_(co.co_filename.endswith('test_exceptions.py'))
+                self.assertTrue(co.co_filename.endswith('test_exceptions.py'))
             else:
                 self.fail("Expected exception")
 
@@ -167,7 +167,7 @@
                 exc, err, tb = sys.exc_info()
                 co = tb.tb_frame.f_code
                 self.assertEquals(co.co_name, "__init__")
-                self.assert_(co.co_filename.endswith('test_exceptions.py'))
+                self.assertTrue(co.co_filename.endswith('test_exceptions.py'))
                 co2 = tb.tb_frame.f_back.f_code
                 self.assertEquals(co2.co_name, "test_capi2")
             else:
@@ -189,12 +189,12 @@
         except NameError:
             pass
         else:
-            self.failUnlessEqual(str(WindowsError(1001)),
+            self.assertEqual(str(WindowsError(1001)),
                                  "1001")
-            self.failUnlessEqual(str(WindowsError(1001, "message")),
+            self.assertEqual(str(WindowsError(1001, "message")),
                                  "[Error 1001] message")
-            self.failUnlessEqual(WindowsError(1001, "message").errno, 22)
-            self.failUnlessEqual(WindowsError(1001, "message").winerror, 1001)
+            self.assertEqual(WindowsError(1001, "message").errno, 22)
+            self.assertEqual(WindowsError(1001, "message").winerror, 1001)
 
     def testAttributes(self):
         # test that exception attributes are happy
@@ -319,25 +319,25 @@
             tb = sys.exc_info()[2]
 
         e = BaseException().with_traceback(tb)
-        self.failUnless(isinstance(e, BaseException))
+        self.assertTrue(isinstance(e, BaseException))
         self.assertEqual(e.__traceback__, tb)
 
         e = IndexError(5).with_traceback(tb)
-        self.failUnless(isinstance(e, IndexError))
+        self.assertTrue(isinstance(e, IndexError))
         self.assertEqual(e.__traceback__, tb)
 
         class MyException(Exception):
             pass
 
         e = MyException().with_traceback(tb)
-        self.failUnless(isinstance(e, MyException))
+        self.assertTrue(isinstance(e, MyException))
         self.assertEqual(e.__traceback__, tb)
 
     def testInvalidTraceback(self):
         try:
             Exception().__traceback__ = 5
         except TypeError as e:
-            self.failUnless("__traceback__ must be a traceback" in str(e))
+            self.assertTrue("__traceback__ must be a traceback" in str(e))
         else:
             self.fail("No exception raised")
 
@@ -402,10 +402,10 @@
     def testUnicodeStrUsage(self):
         # Make sure both instances and classes have a str and unicode
         # representation.
-        self.failUnless(str(Exception))
-        self.failUnless(str(Exception))
-        self.failUnless(str(Exception('a')))
-        self.failUnless(str(Exception('a')))
+        self.assertTrue(str(Exception))
+        self.assertTrue(str(Exception))
+        self.assertTrue(str(Exception('a')))
+        self.assertTrue(str(Exception('a')))
 
     def testExceptionCleanupNames(self):
         # Make sure the local variable bound to the exception instance by
@@ -413,9 +413,9 @@
         try:
             raise Exception()
         except Exception as e:
-            self.failUnless(e)
+            self.assertTrue(e)
             del e
-        self.failIf('e' in locals())
+        self.assertFalse('e' in locals())
 
     def testExceptionCleanupState(self):
         # Make sure exception state is cleaned up as soon as the except
@@ -441,7 +441,7 @@
             pass
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
         # Qualified "except" without "as"
         obj = MyObj()
@@ -452,7 +452,7 @@
             pass
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
         # Bare "except"
         obj = MyObj()
@@ -463,7 +463,7 @@
             pass
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
         # "except" with premature block leave
         obj = MyObj()
@@ -475,7 +475,7 @@
                 break
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
         # "except" block raising another exception
         obj = MyObj()
@@ -493,7 +493,7 @@
             e.__context__ = None
             obj = None
             obj = wr()
-            self.failUnless(obj is None, "%s" % obj)
+            self.assertTrue(obj is None, "%s" % obj)
 
         # Some complicated construct
         obj = MyObj()
@@ -510,7 +510,7 @@
                 pass
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
         # Inside an exception-silencing "with" block
         class Context:
@@ -524,7 +524,7 @@
             inner_raising_func()
         obj = None
         obj = wr()
-        self.failUnless(obj is None, "%s" % obj)
+        self.assertTrue(obj is None, "%s" % obj)
 
     def test_generator_leaking(self):
         # Test that generator exception state doesn't leak into the calling
@@ -598,8 +598,8 @@
             except RuntimeError:
                 return sys.exc_info()
         e, v, tb = g()
-        self.assert_(isinstance(v, RuntimeError), type(v))
-        self.assert_("maximum recursion depth exceeded" in str(v), str(v))
+        self.assertTrue(isinstance(v, RuntimeError), type(v))
+        self.assertTrue("maximum recursion depth exceeded" in str(v), str(v))
 
 
     def test_MemoryError(self):
diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py
index 3360121..bd2d7c0 100644
--- a/Lib/test/test_file.py
+++ b/Lib/test/test_file.py
@@ -83,13 +83,13 @@
     def testErrors(self):
         f = self.f
         self.assertEquals(f.name, TESTFN)
-        self.assert_(not f.isatty())
-        self.assert_(not f.closed)
+        self.assertTrue(not f.isatty())
+        self.assertTrue(not f.closed)
 
         if hasattr(f, "readinto"):
             self.assertRaises((IOError, TypeError), f.readinto, "")
         f.close()
-        self.assert_(f.closed)
+        self.assertTrue(f.closed)
 
     def testMethods(self):
         methods = [('fileno', ()),
@@ -111,7 +111,7 @@
 
         # __exit__ should close the file
         self.f.__exit__(None, None, None)
-        self.assert_(self.f.closed)
+        self.assertTrue(self.f.closed)
 
         for methodname, args in methods:
             method = getattr(self.f, methodname)
diff --git a/Lib/test/test_filecmp.py b/Lib/test/test_filecmp.py
index 22f0be7..c71a27a 100644
--- a/Lib/test/test_filecmp.py
+++ b/Lib/test/test_filecmp.py
@@ -25,19 +25,19 @@
         os.unlink(self.name_diff)
 
     def test_matching(self):
-        self.failUnless(filecmp.cmp(self.name, self.name_same),
+        self.assertTrue(filecmp.cmp(self.name, self.name_same),
                         "Comparing file to itself fails")
-        self.failUnless(filecmp.cmp(self.name, self.name_same, shallow=False),
+        self.assertTrue(filecmp.cmp(self.name, self.name_same, shallow=False),
                         "Comparing file to itself fails")
-        self.failUnless(filecmp.cmp(self.name, self.name, shallow=False),
+        self.assertTrue(filecmp.cmp(self.name, self.name, shallow=False),
                         "Comparing file to identical file fails")
-        self.failUnless(filecmp.cmp(self.name, self.name),
+        self.assertTrue(filecmp.cmp(self.name, self.name),
                         "Comparing file to identical file fails")
 
     def test_different(self):
-        self.failIf(filecmp.cmp(self.name, self.name_diff),
+        self.assertFalse(filecmp.cmp(self.name, self.name_diff),
                     "Mismatched files compare as equal")
-        self.failIf(filecmp.cmp(self.name, self.dir),
+        self.assertFalse(filecmp.cmp(self.name, self.dir),
                     "File and directory compare as equal")
 
 class DirCompareTestCase(unittest.TestCase):
@@ -69,19 +69,19 @@
         shutil.rmtree(self.dir_diff)
 
     def test_cmpfiles(self):
-        self.failUnless(filecmp.cmpfiles(self.dir, self.dir, ['file']) ==
+        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir, ['file']) ==
                         (['file'], [], []),
                         "Comparing directory to itself fails")
-        self.failUnless(filecmp.cmpfiles(self.dir, self.dir_same, ['file']) ==
+        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir_same, ['file']) ==
                         (['file'], [], []),
                         "Comparing directory to same fails")
 
         # Try it with shallow=False
-        self.failUnless(filecmp.cmpfiles(self.dir, self.dir, ['file'],
+        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir, ['file'],
                                          shallow=False) ==
                         (['file'], [], []),
                         "Comparing directory to itself fails")
-        self.failUnless(filecmp.cmpfiles(self.dir, self.dir_same, ['file'],
+        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir_same, ['file'],
                                          shallow=False),
                         "Comparing directory to same fails")
 
@@ -90,7 +90,7 @@
         output.write('Different contents.\n')
         output.close()
 
-        self.failIf(filecmp.cmpfiles(self.dir, self.dir_same,
+        self.assertFalse(filecmp.cmpfiles(self.dir, self.dir_same,
                                      ['file', 'file2']) ==
                     (['file'], ['file2'], []),
                     "Comparing mismatched directories fails")
@@ -104,14 +104,14 @@
         else:
             self.assertEqual([d.left_list, d.right_list],[['file'], ['file']])
         self.assertEqual(d.common, ['file'])
-        self.failUnless(d.left_only == d.right_only == [])
+        self.assertTrue(d.left_only == d.right_only == [])
         self.assertEqual(d.same_files, ['file'])
         self.assertEqual(d.diff_files, [])
 
         # Check attributes for comparison of two different directories
         d = filecmp.dircmp(self.dir, self.dir_diff)
         self.assertEqual(d.left_list, ['file'])
-        self.failUnless(d.right_list == ['file', 'file2'])
+        self.assertTrue(d.right_list == ['file', 'file2'])
         self.assertEqual(d.common, ['file'])
         self.assertEqual(d.left_only, [])
         self.assertEqual(d.right_only, ['file2'])
diff --git a/Lib/test/test_fileinput.py b/Lib/test/test_fileinput.py
index a4d59e1..aae16ea 100644
--- a/Lib/test/test_fileinput.py
+++ b/Lib/test/test_fileinput.py
@@ -68,8 +68,8 @@
         self.assertEqual(fi.filename(), t2)
         self.assertEqual(fi.lineno(), 21)
         self.assertEqual(fi.filelineno(), 6)
-        self.failIf(fi.isfirstline())
-        self.failIf(fi.isstdin())
+        self.assertFalse(fi.isfirstline())
+        self.assertFalse(fi.isstdin())
 
         if verbose:
             print('%s. Nextfile (bs=%s)' % (start+2, bs))
@@ -138,7 +138,7 @@
             self.assertEqual(fi.filename(), t3)
 
             line = fi.readline()
-            self.failIf(line)
+            self.assertFalse(line)
             self.assertEqual(fi.lineno(), 1)
             self.assertEqual(fi.filelineno(), 0)
             self.assertEqual(fi.filename(), t4)
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index 657401e..679ed08 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -80,17 +80,17 @@
 
     def testErrors(self):
         f = self.f
-        self.assert_(not f.isatty())
-        self.assert_(not f.closed)
+        self.assertTrue(not f.isatty())
+        self.assertTrue(not f.closed)
         #self.assertEquals(f.name, TESTFN)
         self.assertRaises(ValueError, f.read, 10) # Open for reading
         f.close()
-        self.assert_(f.closed)
+        self.assertTrue(f.closed)
         f = _FileIO(TESTFN, 'r')
         self.assertRaises(TypeError, f.readinto, "")
-        self.assert_(not f.closed)
+        self.assertTrue(not f.closed)
         f.close()
-        self.assert_(f.closed)
+        self.assertTrue(f.closed)
 
     def testMethods(self):
         methods = ['fileno', 'isatty', 'read', 'readinto',
@@ -100,7 +100,7 @@
             methods.remove('truncate')
 
         self.f.close()
-        self.assert_(self.f.closed)
+        self.assertTrue(self.f.closed)
 
         for methodname in methods:
             method = getattr(self.f, methodname)
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index e74e892..af5e13c 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -136,27 +136,27 @@
     def test_float_containment(self):
         floats = (INF, -INF, 0.0, 1.0, NAN)
         for f in floats:
-            self.assert_(f in [f], "'%r' not in []" % f)
-            self.assert_(f in (f,), "'%r' not in ()" % f)
-            self.assert_(f in {f}, "'%r' not in set()" % f)
-            self.assert_(f in {f: None}, "'%r' not in {}" % f)
+            self.assertTrue(f in [f], "'%r' not in []" % f)
+            self.assertTrue(f in (f,), "'%r' not in ()" % f)
+            self.assertTrue(f in {f}, "'%r' not in set()" % f)
+            self.assertTrue(f in {f: None}, "'%r' not in {}" % f)
             self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f)
-            self.assert_(f in floats, "'%r' not in container" % f)
+            self.assertTrue(f in floats, "'%r' not in container" % f)
 
         for f in floats:
             # nonidentical containers, same type, same contents
-            self.assert_([f] == [f], "[%r] != [%r]" % (f, f))
-            self.assert_((f,) == (f,), "(%r,) != (%r,)" % (f, f))
-            self.assert_({f} == {f}, "{%r} != {%r}" % (f, f))
-            self.assert_({f : None} == {f: None}, "{%r : None} != "
+            self.assertTrue([f] == [f], "[%r] != [%r]" % (f, f))
+            self.assertTrue((f,) == (f,), "(%r,) != (%r,)" % (f, f))
+            self.assertTrue({f} == {f}, "{%r} != {%r}" % (f, f))
+            self.assertTrue({f : None} == {f: None}, "{%r : None} != "
                                                    "{%r : None}" % (f, f))
 
             # identical containers
             l, t, s, d = [f], (f,), {f}, {f: None}
-            self.assert_(l == l, "[%r] not equal to itself" % f)
-            self.assert_(t == t, "(%r,) not equal to itself" % f)
-            self.assert_(s == s, "{%r} not equal to itself" % f)
-            self.assert_(d == d, "{%r : None} not equal to itself" % f)
+            self.assertTrue(l == l, "[%r] not equal to itself" % f)
+            self.assertTrue(t == t, "(%r,) not equal to itself" % f)
+            self.assertTrue(s == s, "{%r} not equal to itself" % f)
+            self.assertTrue(d == d, "{%r : None} not equal to itself" % f)
 
 
 
@@ -171,9 +171,9 @@
         float.__setformat__('float', self.save_formats['float'])
 
     def test_getformat(self):
-        self.assert_(float.__getformat__('double') in
+        self.assertTrue(float.__getformat__('double') in
                      ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
-        self.assert_(float.__getformat__('float') in
+        self.assertTrue(float.__getformat__('float') in
                      ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
         self.assertRaises(ValueError, float.__getformat__, 'chicken')
         self.assertRaises(TypeError, float.__getformat__, 1)
@@ -493,12 +493,12 @@
 # ways to create and represent inf and nan
 class InfNanTest(unittest.TestCase):
     def test_inf_from_str(self):
-        self.assert_(isinf(float("inf")))
-        self.assert_(isinf(float("+inf")))
-        self.assert_(isinf(float("-inf")))
-        self.assert_(isinf(float("infinity")))
-        self.assert_(isinf(float("+infinity")))
-        self.assert_(isinf(float("-infinity")))
+        self.assertTrue(isinf(float("inf")))
+        self.assertTrue(isinf(float("+inf")))
+        self.assertTrue(isinf(float("-inf")))
+        self.assertTrue(isinf(float("infinity")))
+        self.assertTrue(isinf(float("+infinity")))
+        self.assertTrue(isinf(float("-infinity")))
 
         self.assertEqual(repr(float("inf")), "inf")
         self.assertEqual(repr(float("+inf")), "inf")
@@ -545,9 +545,9 @@
         self.assertEqual(str(-1e300 * 1e300), "-inf")
 
     def test_nan_from_str(self):
-        self.assert_(isnan(float("nan")))
-        self.assert_(isnan(float("+nan")))
-        self.assert_(isnan(float("-nan")))
+        self.assertTrue(isnan(float("nan")))
+        self.assertTrue(isnan(float("+nan")))
+        self.assertTrue(isnan(float("-nan")))
 
         self.assertEqual(repr(float("nan")), "nan")
         self.assertEqual(repr(float("+nan")), "nan")
@@ -581,14 +581,14 @@
         self.assertEqual(str(-1e300 * 1e300 * 0), "nan")
 
     def notest_float_nan(self):
-        self.assert_(NAN.is_nan())
-        self.failIf(INF.is_nan())
-        self.failIf((0.).is_nan())
+        self.assertTrue(NAN.is_nan())
+        self.assertFalse(INF.is_nan())
+        self.assertFalse((0.).is_nan())
 
     def notest_float_inf(self):
-        self.assert_(INF.is_inf())
-        self.failIf(NAN.is_inf())
-        self.failIf((0.).is_inf())
+        self.assertTrue(INF.is_inf())
+        self.assertFalse(NAN.is_inf())
+        self.assertFalse((0.).is_inf())
 
 fromHex = float.fromhex
 toHex = float.hex
diff --git a/Lib/test/test_fnmatch.py b/Lib/test/test_fnmatch.py
index 30ccf69..2f701ca 100644
--- a/Lib/test/test_fnmatch.py
+++ b/Lib/test/test_fnmatch.py
@@ -9,11 +9,11 @@
 class FnmatchTestCase(unittest.TestCase):
     def check_match(self, filename, pattern, should_match=1):
         if should_match:
-            self.assert_(fnmatch(filename, pattern),
+            self.assertTrue(fnmatch(filename, pattern),
                          "expected %r to match pattern %r"
                          % (filename, pattern))
         else:
-            self.assert_(not fnmatch(filename, pattern),
+            self.assertTrue(not fnmatch(filename, pattern),
                          "expected %r not to match pattern %r"
                          % (filename, pattern))
 
diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
index afc8fda..b83cba0 100644
--- a/Lib/test/test_ftplib.py
+++ b/Lib/test/test_ftplib.py
@@ -444,7 +444,7 @@
 
     def testTimeoutDefault(self):
         # default -- use global socket timeout
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(30)
         try:
             ftp = ftplib.FTP("localhost")
@@ -456,7 +456,7 @@
 
     def testTimeoutNone(self):
         # no timeout -- do not use global socket timeout
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(30)
         try:
             ftp = ftplib.FTP("localhost", timeout=None)
diff --git a/Lib/test/test_funcattrs.py b/Lib/test/test_funcattrs.py
index b42f6cc..5765b4e 100644
--- a/Lib/test/test_funcattrs.py
+++ b/Lib/test/test_funcattrs.py
@@ -35,11 +35,11 @@
 
     def test_dir_includes_correct_attrs(self):
         self.b.known_attr = 7
-        self.assert_('known_attr' in dir(self.b),
+        self.assertTrue('known_attr' in dir(self.b),
             "set attributes not in dir listing of method")
         # Test on underlying function object of method
         self.F.a.known_attr = 7
-        self.assert_('known_attr' in dir(self.fi.a), "set attribute on function "
+        self.assertTrue('known_attr' in dir(self.fi.a), "set attribute on function "
                      "implementations, should show up in next dir")
 
     def test_duplicate_function_equality(self):
@@ -248,11 +248,11 @@
         # their presence should not be interpreted as providing any
         # guarantees about the semantics (or even existence) of cell
         # comparisons in future versions of CPython.
-        self.assert_(cell(2) < cell(3))
-        self.assert_(empty_cell() < cell('saturday'))
-        self.assert_(empty_cell() == empty_cell())
-        self.assert_(cell(-36) == cell(-36.0))
-        self.assert_(cell(True) > empty_cell())
+        self.assertTrue(cell(2) < cell(3))
+        self.assertTrue(empty_cell() < cell('saturday'))
+        self.assertTrue(empty_cell() == empty_cell())
+        self.assertTrue(cell(-36) == cell(-36.0))
+        self.assertTrue(cell(True) > empty_cell())
 
 class StaticMethodAttrsTest(unittest.TestCase):
     def test_func_attribute(self):
@@ -260,10 +260,10 @@
             pass
 
         c = classmethod(f)
-        self.assert_(c.__func__ is f)
+        self.assertTrue(c.__func__ is f)
 
         s = staticmethod(f)
-        self.assert_(s.__func__ is f)
+        self.assertTrue(s.__func__ is f)
 
 
 def test_main():
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index dedfb1e..eff31e0 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -96,7 +96,7 @@
             p = self.thetype(capture, *args)
             expected = args + ('x',)
             got, empty = p('x')
-            self.failUnless(expected == got and empty == {})
+            self.assertTrue(expected == got and empty == {})
 
     def test_keyword(self):
         # make sure keyword arguments are captured correctly
@@ -104,15 +104,15 @@
             p = self.thetype(capture, a=a)
             expected = {'a':a,'x':None}
             empty, got = p(x=None)
-            self.failUnless(expected == got and empty == ())
+            self.assertTrue(expected == got and empty == ())
 
     def test_no_side_effects(self):
         # make sure there are no side effects that affect subsequent calls
         p = self.thetype(capture, 0, a=1)
         args1, kw1 = p(1, b=2)
-        self.failUnless(args1 == (0,1) and kw1 == {'a':1,'b':2})
+        self.assertTrue(args1 == (0,1) and kw1 == {'a':1,'b':2})
         args2, kw2 = p()
-        self.failUnless(args2 == (0,) and kw2 == {'a':1})
+        self.assertTrue(args2 == (0,) and kw2 == {'a':1})
 
     def test_error_propagation(self):
         def f(x, y):
@@ -172,13 +172,13 @@
                       updated=functools.WRAPPER_UPDATES):
         # Check attributes were assigned
         for name in assigned:
-            self.failUnless(getattr(wrapper, name) is getattr(wrapped, name))
+            self.assertTrue(getattr(wrapper, name) is getattr(wrapped, name))
         # Check attributes were updated
         for name in updated:
             wrapper_attr = getattr(wrapper, name)
             wrapped_attr = getattr(wrapped, name)
             for key in wrapped_attr:
-                self.failUnless(wrapped_attr[key] is wrapper_attr[key])
+                self.assertTrue(wrapped_attr[key] is wrapper_attr[key])
 
     def test_default_update(self):
         def f():
@@ -204,7 +204,7 @@
         self.check_wrapper(wrapper, f, (), ())
         self.assertEqual(wrapper.__name__, 'wrapper')
         self.assertEqual(wrapper.__doc__, None)
-        self.failIf(hasattr(wrapper, 'attr'))
+        self.assertFalse(hasattr(wrapper, 'attr'))
 
     def test_selective_update(self):
         def f():
@@ -229,7 +229,7 @@
             pass
         functools.update_wrapper(wrapper, max)
         self.assertEqual(wrapper.__name__, 'max')
-        self.assert_(wrapper.__doc__.startswith('max('))
+        self.assertTrue(wrapper.__doc__.startswith('max('))
 
 class TestWraps(TestUpdateWrapper):
 
@@ -257,7 +257,7 @@
         self.check_wrapper(wrapper, f, (), ())
         self.assertEqual(wrapper.__name__, 'wrapper')
         self.assertEqual(wrapper.__doc__, None)
-        self.failIf(hasattr(wrapper, 'attr'))
+        self.assertFalse(hasattr(wrapper, 'attr'))
 
     def test_selective_update(self):
         def f():
diff --git a/Lib/test/test_genericpath.py b/Lib/test/test_genericpath.py
index 9d0baeb..3be9c89 100644
--- a/Lib/test/test_genericpath.py
+++ b/Lib/test/test_genericpath.py
@@ -6,7 +6,7 @@
 class AllCommonTest(unittest.TestCase):
 
     def assertIs(self, a, b):
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
     def test_commonprefix(self):
         self.assertEqual(
@@ -50,7 +50,7 @@
             f.close()
             self.assertEqual(d, b"foobar")
 
-            self.assert_(
+            self.assertTrue(
                 genericpath.getctime(support.TESTFN) <=
                 genericpath.getmtime(support.TESTFN)
             )
diff --git a/Lib/test/test_getargs2.py b/Lib/test/test_getargs2.py
index 34d8ee0..3ffc1cc 100644
--- a/Lib/test/test_getargs2.py
+++ b/Lib/test/test_getargs2.py
@@ -68,68 +68,68 @@
         from _testcapi import getargs_b
         # b returns 'unsigned char', and does range checking (0 ... UCHAR_MAX)
         self.assertRaises(TypeError, getargs_b, 3.14)
-        self.failUnlessEqual(99, getargs_b(Long()))
-        self.failUnlessEqual(99, getargs_b(Int()))
+        self.assertEqual(99, getargs_b(Long()))
+        self.assertEqual(99, getargs_b(Int()))
 
         self.assertRaises(OverflowError, getargs_b, -1)
-        self.failUnlessEqual(0, getargs_b(0))
-        self.failUnlessEqual(UCHAR_MAX, getargs_b(UCHAR_MAX))
+        self.assertEqual(0, getargs_b(0))
+        self.assertEqual(UCHAR_MAX, getargs_b(UCHAR_MAX))
         self.assertRaises(OverflowError, getargs_b, UCHAR_MAX + 1)
 
-        self.failUnlessEqual(42, getargs_b(42))
-        self.failUnlessEqual(42, getargs_b(42))
+        self.assertEqual(42, getargs_b(42))
+        self.assertEqual(42, getargs_b(42))
         self.assertRaises(OverflowError, getargs_b, VERY_LARGE)
 
     def test_B(self):
         from _testcapi import getargs_B
         # B returns 'unsigned char', no range checking
         self.assertRaises(TypeError, getargs_B, 3.14)
-        self.failUnlessEqual(99, getargs_B(Long()))
-        self.failUnlessEqual(99, getargs_B(Int()))
+        self.assertEqual(99, getargs_B(Long()))
+        self.assertEqual(99, getargs_B(Int()))
 
-        self.failUnlessEqual(UCHAR_MAX, getargs_B(-1))
-        self.failUnlessEqual(UCHAR_MAX, getargs_B(-1))
-        self.failUnlessEqual(0, getargs_B(0))
-        self.failUnlessEqual(UCHAR_MAX, getargs_B(UCHAR_MAX))
-        self.failUnlessEqual(0, getargs_B(UCHAR_MAX+1))
+        self.assertEqual(UCHAR_MAX, getargs_B(-1))
+        self.assertEqual(UCHAR_MAX, getargs_B(-1))
+        self.assertEqual(0, getargs_B(0))
+        self.assertEqual(UCHAR_MAX, getargs_B(UCHAR_MAX))
+        self.assertEqual(0, getargs_B(UCHAR_MAX+1))
 
-        self.failUnlessEqual(42, getargs_B(42))
-        self.failUnlessEqual(42, getargs_B(42))
-        self.failUnlessEqual(UCHAR_MAX & VERY_LARGE, getargs_B(VERY_LARGE))
+        self.assertEqual(42, getargs_B(42))
+        self.assertEqual(42, getargs_B(42))
+        self.assertEqual(UCHAR_MAX & VERY_LARGE, getargs_B(VERY_LARGE))
 
     def test_H(self):
         from _testcapi import getargs_H
         # H returns 'unsigned short', no range checking
         self.assertRaises(TypeError, getargs_H, 3.14)
-        self.failUnlessEqual(99, getargs_H(Long()))
-        self.failUnlessEqual(99, getargs_H(Int()))
+        self.assertEqual(99, getargs_H(Long()))
+        self.assertEqual(99, getargs_H(Int()))
 
-        self.failUnlessEqual(USHRT_MAX, getargs_H(-1))
-        self.failUnlessEqual(0, getargs_H(0))
-        self.failUnlessEqual(USHRT_MAX, getargs_H(USHRT_MAX))
-        self.failUnlessEqual(0, getargs_H(USHRT_MAX+1))
+        self.assertEqual(USHRT_MAX, getargs_H(-1))
+        self.assertEqual(0, getargs_H(0))
+        self.assertEqual(USHRT_MAX, getargs_H(USHRT_MAX))
+        self.assertEqual(0, getargs_H(USHRT_MAX+1))
 
-        self.failUnlessEqual(42, getargs_H(42))
-        self.failUnlessEqual(42, getargs_H(42))
+        self.assertEqual(42, getargs_H(42))
+        self.assertEqual(42, getargs_H(42))
 
-        self.failUnlessEqual(VERY_LARGE & USHRT_MAX, getargs_H(VERY_LARGE))
+        self.assertEqual(VERY_LARGE & USHRT_MAX, getargs_H(VERY_LARGE))
 
     def test_I(self):
         from _testcapi import getargs_I
         # I returns 'unsigned int', no range checking
         self.assertRaises(TypeError, getargs_I, 3.14)
-        self.failUnlessEqual(99, getargs_I(Long()))
-        self.failUnlessEqual(99, getargs_I(Int()))
+        self.assertEqual(99, getargs_I(Long()))
+        self.assertEqual(99, getargs_I(Int()))
 
-        self.failUnlessEqual(UINT_MAX, getargs_I(-1))
-        self.failUnlessEqual(0, getargs_I(0))
-        self.failUnlessEqual(UINT_MAX, getargs_I(UINT_MAX))
-        self.failUnlessEqual(0, getargs_I(UINT_MAX+1))
+        self.assertEqual(UINT_MAX, getargs_I(-1))
+        self.assertEqual(0, getargs_I(0))
+        self.assertEqual(UINT_MAX, getargs_I(UINT_MAX))
+        self.assertEqual(0, getargs_I(UINT_MAX+1))
 
-        self.failUnlessEqual(42, getargs_I(42))
-        self.failUnlessEqual(42, getargs_I(42))
+        self.assertEqual(42, getargs_I(42))
+        self.assertEqual(42, getargs_I(42))
 
-        self.failUnlessEqual(VERY_LARGE & UINT_MAX, getargs_I(VERY_LARGE))
+        self.assertEqual(VERY_LARGE & UINT_MAX, getargs_I(VERY_LARGE))
 
     def test_k(self):
         from _testcapi import getargs_k
@@ -139,47 +139,47 @@
         self.assertRaises(TypeError, getargs_k, Long())
         self.assertRaises(TypeError, getargs_k, Int())
 
-        self.failUnlessEqual(ULONG_MAX, getargs_k(-1))
-        self.failUnlessEqual(0, getargs_k(0))
-        self.failUnlessEqual(ULONG_MAX, getargs_k(ULONG_MAX))
-        self.failUnlessEqual(0, getargs_k(ULONG_MAX+1))
+        self.assertEqual(ULONG_MAX, getargs_k(-1))
+        self.assertEqual(0, getargs_k(0))
+        self.assertEqual(ULONG_MAX, getargs_k(ULONG_MAX))
+        self.assertEqual(0, getargs_k(ULONG_MAX+1))
 
-        self.failUnlessEqual(42, getargs_k(42))
-        self.failUnlessEqual(42, getargs_k(42))
+        self.assertEqual(42, getargs_k(42))
+        self.assertEqual(42, getargs_k(42))
 
-        self.failUnlessEqual(VERY_LARGE & ULONG_MAX, getargs_k(VERY_LARGE))
+        self.assertEqual(VERY_LARGE & ULONG_MAX, getargs_k(VERY_LARGE))
 
 class Signed_TestCase(unittest.TestCase):
     def test_i(self):
         from _testcapi import getargs_i
         # i returns 'int', and does range checking (INT_MIN ... INT_MAX)
         self.assertRaises(TypeError, getargs_i, 3.14)
-        self.failUnlessEqual(99, getargs_i(Long()))
-        self.failUnlessEqual(99, getargs_i(Int()))
+        self.assertEqual(99, getargs_i(Long()))
+        self.assertEqual(99, getargs_i(Int()))
 
         self.assertRaises(OverflowError, getargs_i, INT_MIN-1)
-        self.failUnlessEqual(INT_MIN, getargs_i(INT_MIN))
-        self.failUnlessEqual(INT_MAX, getargs_i(INT_MAX))
+        self.assertEqual(INT_MIN, getargs_i(INT_MIN))
+        self.assertEqual(INT_MAX, getargs_i(INT_MAX))
         self.assertRaises(OverflowError, getargs_i, INT_MAX+1)
 
-        self.failUnlessEqual(42, getargs_i(42))
-        self.failUnlessEqual(42, getargs_i(42))
+        self.assertEqual(42, getargs_i(42))
+        self.assertEqual(42, getargs_i(42))
         self.assertRaises(OverflowError, getargs_i, VERY_LARGE)
 
     def test_l(self):
         from _testcapi import getargs_l
         # l returns 'long', and does range checking (LONG_MIN ... LONG_MAX)
         self.assertRaises(TypeError, getargs_l, 3.14)
-        self.failUnlessEqual(99, getargs_l(Long()))
-        self.failUnlessEqual(99, getargs_l(Int()))
+        self.assertEqual(99, getargs_l(Long()))
+        self.assertEqual(99, getargs_l(Int()))
 
         self.assertRaises(OverflowError, getargs_l, LONG_MIN-1)
-        self.failUnlessEqual(LONG_MIN, getargs_l(LONG_MIN))
-        self.failUnlessEqual(LONG_MAX, getargs_l(LONG_MAX))
+        self.assertEqual(LONG_MIN, getargs_l(LONG_MIN))
+        self.assertEqual(LONG_MAX, getargs_l(LONG_MAX))
         self.assertRaises(OverflowError, getargs_l, LONG_MAX+1)
 
-        self.failUnlessEqual(42, getargs_l(42))
-        self.failUnlessEqual(42, getargs_l(42))
+        self.assertEqual(42, getargs_l(42))
+        self.assertEqual(42, getargs_l(42))
         self.assertRaises(OverflowError, getargs_l, VERY_LARGE)
 
     def test_n(self):
@@ -191,12 +191,12 @@
         self.assertRaises(TypeError, getargs_n, Int())
 
         self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MIN-1)
-        self.failUnlessEqual(PY_SSIZE_T_MIN, getargs_n(PY_SSIZE_T_MIN))
-        self.failUnlessEqual(PY_SSIZE_T_MAX, getargs_n(PY_SSIZE_T_MAX))
+        self.assertEqual(PY_SSIZE_T_MIN, getargs_n(PY_SSIZE_T_MIN))
+        self.assertEqual(PY_SSIZE_T_MAX, getargs_n(PY_SSIZE_T_MAX))
         self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MAX+1)
 
-        self.failUnlessEqual(42, getargs_n(42))
-        self.failUnlessEqual(42, getargs_n(42))
+        self.assertEqual(42, getargs_n(42))
+        self.assertEqual(42, getargs_n(42))
         self.assertRaises(OverflowError, getargs_n, VERY_LARGE)
 
 
@@ -204,18 +204,18 @@
     def test_L(self):
         from _testcapi import getargs_L
         # L returns 'long long', and does range checking (LLONG_MIN ... LLONG_MAX)
-        self.failUnlessRaises(TypeError, getargs_L, "Hello")
-        self.failUnlessEqual(3, getargs_L(3.14))
-        self.failUnlessEqual(99, getargs_L(Long()))
-        self.failUnlessEqual(99, getargs_L(Int()))
+        self.assertRaises(TypeError, getargs_L, "Hello")
+        self.assertEqual(3, getargs_L(3.14))
+        self.assertEqual(99, getargs_L(Long()))
+        self.assertEqual(99, getargs_L(Int()))
 
         self.assertRaises(OverflowError, getargs_L, LLONG_MIN-1)
-        self.failUnlessEqual(LLONG_MIN, getargs_L(LLONG_MIN))
-        self.failUnlessEqual(LLONG_MAX, getargs_L(LLONG_MAX))
+        self.assertEqual(LLONG_MIN, getargs_L(LLONG_MIN))
+        self.assertEqual(LLONG_MAX, getargs_L(LLONG_MAX))
         self.assertRaises(OverflowError, getargs_L, LLONG_MAX+1)
 
-        self.failUnlessEqual(42, getargs_L(42))
-        self.failUnlessEqual(42, getargs_L(42))
+        self.assertEqual(42, getargs_L(42))
+        self.assertEqual(42, getargs_L(42))
         self.assertRaises(OverflowError, getargs_L, VERY_LARGE)
 
     def test_K(self):
@@ -224,14 +224,14 @@
         self.assertRaises(TypeError, getargs_K, 3.14)
         self.assertRaises(TypeError, getargs_K, Long())
         self.assertRaises(TypeError, getargs_K, Int())
-        self.failUnlessEqual(ULLONG_MAX, getargs_K(ULLONG_MAX))
-        self.failUnlessEqual(0, getargs_K(0))
-        self.failUnlessEqual(0, getargs_K(ULLONG_MAX+1))
+        self.assertEqual(ULLONG_MAX, getargs_K(ULLONG_MAX))
+        self.assertEqual(0, getargs_K(0))
+        self.assertEqual(0, getargs_K(ULLONG_MAX+1))
 
-        self.failUnlessEqual(42, getargs_K(42))
-        self.failUnlessEqual(42, getargs_K(42))
+        self.assertEqual(42, getargs_K(42))
+        self.assertEqual(42, getargs_K(42))
 
-        self.failUnlessEqual(VERY_LARGE & ULLONG_MAX, getargs_K(VERY_LARGE))
+        self.assertEqual(VERY_LARGE & ULLONG_MAX, getargs_K(VERY_LARGE))
 
 
 class Tuple_TestCase(unittest.TestCase):
diff --git a/Lib/test/test_getopt.py b/Lib/test/test_getopt.py
index b7a6309..20b5690 100644
--- a/Lib/test/test_getopt.py
+++ b/Lib/test/test_getopt.py
@@ -23,21 +23,21 @@
         self.assertRaises(getopt.GetoptError, *args, **kwargs)
 
     def test_short_has_arg(self):
-        self.failUnless(getopt.short_has_arg('a', 'a:'))
-        self.failIf(getopt.short_has_arg('a', 'a'))
+        self.assertTrue(getopt.short_has_arg('a', 'a:'))
+        self.assertFalse(getopt.short_has_arg('a', 'a'))
         self.assertError(getopt.short_has_arg, 'a', 'b')
 
     def test_long_has_args(self):
         has_arg, option = getopt.long_has_args('abc', ['abc='])
-        self.failUnless(has_arg)
+        self.assertTrue(has_arg)
         self.assertEqual(option, 'abc')
 
         has_arg, option = getopt.long_has_args('abc', ['abc'])
-        self.failIf(has_arg)
+        self.assertFalse(has_arg)
         self.assertEqual(option, 'abc')
 
         has_arg, option = getopt.long_has_args('abc', ['abcd'])
-        self.failIf(has_arg)
+        self.assertFalse(has_arg)
         self.assertEqual(option, 'abcd')
 
         self.assertError(getopt.long_has_args, 'abc', ['def'])
diff --git a/Lib/test/test_gettext.py b/Lib/test/test_gettext.py
index 0023941..d667819 100644
--- a/Lib/test/test_gettext.py
+++ b/Lib/test/test_gettext.py
@@ -306,7 +306,7 @@
         self._ = self.t.gettext
 
     def test_unicode_msgid(self):
-        unless = self.failUnless
+        unless = self.assertTrue
         unless(isinstance(self._(''), str))
         unless(isinstance(self._(''), str))
 
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 977f0b8..b861207 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -38,9 +38,9 @@
         if maxsize == 2147483647:
             self.assertEquals(-2147483647-1, -0o20000000000)
             # XXX -2147483648
-            self.assert_(0o37777777777 > 0)
-            self.assert_(0xffffffff > 0)
-            self.assert_(0b1111111111111111111111111111111 > 0)
+            self.assertTrue(0o37777777777 > 0)
+            self.assertTrue(0xffffffff > 0)
+            self.assertTrue(0b1111111111111111111111111111111 > 0)
             for s in ('2147483648', '0o40000000000', '0x100000000',
                       '0b10000000000000000000000000000000'):
                 try:
@@ -49,9 +49,9 @@
                     self.fail("OverflowError on huge integer literal %r" % s)
         elif maxsize == 9223372036854775807:
             self.assertEquals(-9223372036854775807-1, -0o1000000000000000000000)
-            self.assert_(0o1777777777777777777777 > 0)
-            self.assert_(0xffffffffffffffff > 0)
-            self.assert_(0b11111111111111111111111111111111111111111111111111111111111111 > 0)
+            self.assertTrue(0o1777777777777777777777 > 0)
+            self.assertTrue(0xffffffffffffffff > 0)
+            self.assertTrue(0b11111111111111111111111111111111111111111111111111111111111111 > 0)
             for s in '9223372036854775808', '0o2000000000000000000000', \
                      '0x10000000000000000', \
                      '0b100000000000000000000000000000000000000000000000000000000000000':
@@ -87,15 +87,15 @@
         x = 3.1e4
 
     def testStringLiterals(self):
-        x = ''; y = ""; self.assert_(len(x) == 0 and x == y)
-        x = '\''; y = "'"; self.assert_(len(x) == 1 and x == y and ord(x) == 39)
-        x = '"'; y = "\""; self.assert_(len(x) == 1 and x == y and ord(x) == 34)
+        x = ''; y = ""; self.assertTrue(len(x) == 0 and x == y)
+        x = '\''; y = "'"; self.assertTrue(len(x) == 1 and x == y and ord(x) == 39)
+        x = '"'; y = "\""; self.assertTrue(len(x) == 1 and x == y and ord(x) == 34)
         x = "doesn't \"shrink\" does it"
         y = 'doesn\'t "shrink" does it'
-        self.assert_(len(x) == 24 and x == y)
+        self.assertTrue(len(x) == 24 and x == y)
         x = "does \"shrink\" doesn't it"
         y = 'does "shrink" doesn\'t it'
-        self.assert_(len(x) == 24 and x == y)
+        self.assertTrue(len(x) == 24 and x == y)
         x = """
 The "quick"
 brown fox
@@ -128,7 +128,7 @@
 
     def testEllipsis(self):
         x = ...
-        self.assert_(x is Ellipsis)
+        self.assertTrue(x is Ellipsis)
         self.assertRaises(SyntaxError, eval, ".. .")
 
 class GrammarTests(unittest.TestCase):
@@ -494,7 +494,7 @@
             nonlocal x, y
 
     def testAssert(self):
-        # assert_stmt: 'assert' test [',' test]
+        # assertTruestmt: 'assert' test [',' test]
         assert 1
         assert 1, 1
         assert lambda x:x
diff --git a/Lib/test/test_grp.py b/Lib/test/test_grp.py
index 1c1f75f..765b4b6 100755
--- a/Lib/test/test_grp.py
+++ b/Lib/test/test_grp.py
@@ -12,13 +12,13 @@
         # attributes promised by the docs
         self.assertEqual(len(value), 4)
         self.assertEqual(value[0], value.gr_name)
-        self.assert_(isinstance(value.gr_name, str))
+        self.assertTrue(isinstance(value.gr_name, str))
         self.assertEqual(value[1], value.gr_passwd)
-        self.assert_(isinstance(value.gr_passwd, str))
+        self.assertTrue(isinstance(value.gr_passwd, str))
         self.assertEqual(value[2], value.gr_gid)
-        self.assert_(isinstance(value.gr_gid, int))
+        self.assertTrue(isinstance(value.gr_gid, int))
         self.assertEqual(value[3], value.gr_mem)
-        self.assert_(isinstance(value.gr_mem, list))
+        self.assertTrue(isinstance(value.gr_mem, list))
 
     def test_values(self):
         entries = grp.getgrall()
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index baf3a21..d928635 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -91,7 +91,7 @@
         while 1:
             L = f.readline(line_length)
             if not L and line_length != 0: break
-            self.assert_(len(L) <= line_length)
+            self.assertTrue(len(L) <= line_length)
             line_length = (line_length + 1) % 50
         f.close()
 
@@ -157,7 +157,7 @@
     def test_1647484(self):
         for mode in ('wb', 'rb'):
             f = gzip.GzipFile(self.filename, mode)
-            self.assert_(hasattr(f, "name"))
+            self.assertTrue(hasattr(f, "name"))
             self.assertEqual(f.name, self.filename)
             f.close()
 
@@ -169,7 +169,7 @@
         fRead = gzip.GzipFile(self.filename)
         dataRead = fRead.read()
         self.assertEqual(dataRead, data1)
-        self.assert_(hasattr(fRead, 'mtime'))
+        self.assertTrue(hasattr(fRead, 'mtime'))
         self.assertEqual(fRead.mtime, mtime)
         fRead.close()
 
diff --git a/Lib/test/test_hash.py b/Lib/test/test_hash.py
index 5babc5a..569e5e0 100644
--- a/Lib/test/test_hash.py
+++ b/Lib/test/test_hash.py
@@ -91,7 +91,7 @@
         objects = (self.default_expected +
                    self.fixed_expected)
         for obj in objects:
-            self.assert_(isinstance(obj, Hashable), repr(obj))
+            self.assertTrue(isinstance(obj, Hashable), repr(obj))
 
     def test_not_hashable(self):
         for obj in self.error_expected:
diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py
index 5bfea6b..d0ad07d 100644
--- a/Lib/test/test_hashlib.py
+++ b/Lib/test/test_hashlib.py
@@ -36,7 +36,7 @@
         except ValueError:
             pass
         else:
-            self.assert_(0 == "hashlib didn't reject bogus hash name")
+            self.assertTrue(0 == "hashlib didn't reject bogus hash name")
 
     def test_hexdigest(self):
         for name in self.supported_hash_names:
diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py
index 94c3992..5e3b0ee 100644
--- a/Lib/test/test_heapq.py
+++ b/Lib/test/test_heapq.py
@@ -46,7 +46,7 @@
         for pos, item in enumerate(heap):
             if pos: # pos 0 has no parent
                 parentpos = (pos-1) >> 1
-                self.assert_(heap[parentpos] <= item)
+                self.assertTrue(heap[parentpos] <= item)
 
     def test_heapify(self):
         for size in range(30):
diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py
index 8dcbe7e..fb78eba 100644
--- a/Lib/test/test_hmac.py
+++ b/Lib/test/test_hmac.py
@@ -280,7 +280,7 @@
         # Testing if attributes are of same type.
         h1 = hmac.HMAC(b"key")
         h2 = h1.copy()
-        self.failUnless(h1.digest_cons == h2.digest_cons,
+        self.assertTrue(h1.digest_cons == h2.digest_cons,
             "digest constructors don't match.")
         self.assertEqual(type(h1.inner), type(h2.inner),
             "Types of inner don't match.")
@@ -292,10 +292,10 @@
         h1 = hmac.HMAC(b"key")
         h2 = h1.copy()
         # Using id() in case somebody has overridden __eq__/__ne__.
-        self.failUnless(id(h1) != id(h2), "No real copy of the HMAC instance.")
-        self.failUnless(id(h1.inner) != id(h2.inner),
+        self.assertTrue(id(h1) != id(h2), "No real copy of the HMAC instance.")
+        self.assertTrue(id(h1.inner) != id(h2.inner),
             "No real copy of the attribute 'inner'.")
-        self.failUnless(id(h1.outer) != id(h2.outer),
+        self.assertTrue(id(h1.outer) != id(h2.outer),
             "No real copy of the attribute 'outer'.")
 
     def test_equality(self):
diff --git a/Lib/test/test_http_cookiejar.py b/Lib/test/test_http_cookiejar.py
index 5ec0c25..e5f7143 100644
--- a/Lib/test/test_http_cookiejar.py
+++ b/Lib/test/test_http_cookiejar.py
@@ -25,7 +25,7 @@
         az = time2isoz()
         bz = time2isoz(500000)
         for text in (az, bz):
-            self.assert_(re.search(r"^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$", text),
+            self.assertTrue(re.search(r"^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$", text),
                          "bad time2isoz format: %s %s" % (az, bz))
 
     def test_http2time(self):
@@ -74,7 +74,7 @@
             t2 = http2time(s.lower())
             t3 = http2time(s.upper())
 
-            self.assert_(t == t2 == t3 == test_t,
+            self.assertTrue(t == t2 == t3 == test_t,
                          "'%s'  =>  %s, %s, %s (%s)" % (s, t, t2, t3, test_t))
 
     def test_http2time_garbage(self):
@@ -90,7 +90,7 @@
             '01-01-1980 00:61:00',
             '01-01-1980 00:00:62',
             ]:
-            self.assert_(http2time(test) is None,
+            self.assertTrue(http2time(test) is None,
                          "http2time(%s) is not None\n"
                          "http2time(test) %s" % (test, http2time(test))
                          )
@@ -332,8 +332,8 @@
             ]:
             request = urllib.request.Request(url)
             r = pol.domain_return_ok(domain, request)
-            if ok: self.assert_(r)
-            else: self.assert_(not r)
+            if ok: self.assertTrue(r)
+            else: self.assertTrue(not r)
 
     def test_missing_value(self):
         # missing = sign in Cookie: header is regarded by Mozilla as a missing
@@ -343,10 +343,10 @@
         interact_netscape(c, "http://www.acme.com/", 'eggs')
         interact_netscape(c, "http://www.acme.com/", '"spam"; path=/foo/')
         cookie = c._cookies["www.acme.com"]["/"]["eggs"]
-        self.assert_(cookie.value is None)
+        self.assertTrue(cookie.value is None)
         self.assertEquals(cookie.name, "eggs")
         cookie = c._cookies["www.acme.com"]['/foo/']['"spam"']
-        self.assert_(cookie.value is None)
+        self.assertTrue(cookie.value is None)
         self.assertEquals(cookie.name, '"spam"')
         self.assertEquals(lwp_cookie_str(cookie), (
             r'"spam"; path="/foo/"; domain="www.acme.com"; '
@@ -388,7 +388,7 @@
             try:
                 cookie = c._cookies["www.example.com"]["/"]["ni"]
             except KeyError:
-                self.assert_(version is None)  # didn't expect a stored cookie
+                self.assertTrue(version is None)  # didn't expect a stored cookie
             else:
                 self.assertEqual(cookie.version, version)
                 # 2965 cookies are unaffected
@@ -410,28 +410,28 @@
 
         cookie = c._cookies[".acme.com"]["/"]["spam"]
         self.assertEquals(cookie.domain, ".acme.com")
-        self.assert_(cookie.domain_specified)
+        self.assertTrue(cookie.domain_specified)
         self.assertEquals(cookie.port, DEFAULT_HTTP_PORT)
-        self.assert_(not cookie.port_specified)
+        self.assertTrue(not cookie.port_specified)
         # case is preserved
-        self.assert_(cookie.has_nonstandard_attr("blArgh") and
+        self.assertTrue(cookie.has_nonstandard_attr("blArgh") and
                      not cookie.has_nonstandard_attr("blargh"))
 
         cookie = c._cookies["www.acme.com"]["/"]["ni"]
         self.assertEquals(cookie.domain, "www.acme.com")
-        self.assert_(not cookie.domain_specified)
+        self.assertTrue(not cookie.domain_specified)
         self.assertEquals(cookie.port, "80,8080")
-        self.assert_(cookie.port_specified)
+        self.assertTrue(cookie.port_specified)
 
         cookie = c._cookies["www.acme.com"]["/"]["nini"]
-        self.assert_(cookie.port is None)
-        self.assert_(not cookie.port_specified)
+        self.assertTrue(cookie.port is None)
+        self.assertTrue(not cookie.port_specified)
 
         # invalid expires should not cause cookie to be dropped
         foo = c._cookies["www.acme.com"]["/"]["foo"]
         spam = c._cookies["www.acme.com"]["/"]["foo"]
-        self.assert_(foo.expires is None)
-        self.assert_(spam.expires is None)
+        self.assertTrue(foo.expires is None)
+        self.assertTrue(spam.expires is None)
 
     def test_ns_parser_special_names(self):
         # names such as 'expires' are not special in first name=value pair
@@ -441,8 +441,8 @@
         interact_netscape(c, "http://www.acme.com/", 'version=eggs; spam=eggs')
 
         cookies = c._cookies["www.acme.com"]["/"]
-        self.assert_('expires' in cookies)
-        self.assert_('version' in cookies)
+        self.assertTrue('expires' in cookies)
+        self.assertTrue('version' in cookies)
 
     def test_expires(self):
         # if expires is in future, keep cookie...
@@ -457,7 +457,7 @@
                           now)
         h = interact_netscape(c, "http://www.acme.com/")
         self.assertEquals(len(c), 1)
-        self.assert_('spam="bar"' in h and "foo" not in h)
+        self.assertTrue('spam="bar"' in h and "foo" not in h)
 
         # max-age takes precedence over expires, and zero max-age is request to
         # delete both new cookie and any old matching cookie
@@ -478,7 +478,7 @@
         self.assertEquals(len(c), 2)
         c.clear_session_cookies()
         self.assertEquals(len(c), 1)
-        self.assert_('spam="bar"' in h)
+        self.assertTrue('spam="bar"' in h)
 
         # XXX RFC 2965 expiry rules (some apply to V0 too)
 
@@ -488,39 +488,39 @@
 
         c = CookieJar(pol)
         interact_2965(c, "http://www.acme.com/", 'spam="bar"; Version="1"')
-        self.assert_("/" in c._cookies["www.acme.com"])
+        self.assertTrue("/" in c._cookies["www.acme.com"])
 
         c = CookieJar(pol)
         interact_2965(c, "http://www.acme.com/blah", 'eggs="bar"; Version="1"')
-        self.assert_("/" in c._cookies["www.acme.com"])
+        self.assertTrue("/" in c._cookies["www.acme.com"])
 
         c = CookieJar(pol)
         interact_2965(c, "http://www.acme.com/blah/rhubarb",
                       'eggs="bar"; Version="1"')
-        self.assert_("/blah/" in c._cookies["www.acme.com"])
+        self.assertTrue("/blah/" in c._cookies["www.acme.com"])
 
         c = CookieJar(pol)
         interact_2965(c, "http://www.acme.com/blah/rhubarb/",
                       'eggs="bar"; Version="1"')
-        self.assert_("/blah/rhubarb/" in c._cookies["www.acme.com"])
+        self.assertTrue("/blah/rhubarb/" in c._cookies["www.acme.com"])
 
         # Netscape
 
         c = CookieJar()
         interact_netscape(c, "http://www.acme.com/", 'spam="bar"')
-        self.assert_("/" in c._cookies["www.acme.com"])
+        self.assertTrue("/" in c._cookies["www.acme.com"])
 
         c = CookieJar()
         interact_netscape(c, "http://www.acme.com/blah", 'eggs="bar"')
-        self.assert_("/" in c._cookies["www.acme.com"])
+        self.assertTrue("/" in c._cookies["www.acme.com"])
 
         c = CookieJar()
         interact_netscape(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"')
-        self.assert_("/blah" in c._cookies["www.acme.com"])
+        self.assertTrue("/blah" in c._cookies["www.acme.com"])
 
         c = CookieJar()
         interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"')
-        self.assert_("/blah/rhubarb" in c._cookies["www.acme.com"])
+        self.assertTrue("/blah/rhubarb" in c._cookies["www.acme.com"])
 
     def test_escape_path(self):
         cases = [
@@ -589,14 +589,14 @@
         self.assertEquals(request_host(req), "www.acme.com")
 
     def test_is_HDN(self):
-        self.assert_(is_HDN("foo.bar.com"))
-        self.assert_(is_HDN("1foo2.3bar4.5com"))
-        self.assert_(not is_HDN("192.168.1.1"))
-        self.assert_(not is_HDN(""))
-        self.assert_(not is_HDN("."))
-        self.assert_(not is_HDN(".foo.bar.com"))
-        self.assert_(not is_HDN("..foo"))
-        self.assert_(not is_HDN("foo."))
+        self.assertTrue(is_HDN("foo.bar.com"))
+        self.assertTrue(is_HDN("1foo2.3bar4.5com"))
+        self.assertTrue(not is_HDN("192.168.1.1"))
+        self.assertTrue(not is_HDN(""))
+        self.assertTrue(not is_HDN("."))
+        self.assertTrue(not is_HDN(".foo.bar.com"))
+        self.assertTrue(not is_HDN("..foo"))
+        self.assertTrue(not is_HDN("foo."))
 
     def test_reach(self):
         self.assertEquals(reach("www.acme.com"), ".acme.com")
@@ -609,40 +609,40 @@
         self.assertEquals(reach("192.168.0.1"), "192.168.0.1")
 
     def test_domain_match(self):
-        self.assert_(domain_match("192.168.1.1", "192.168.1.1"))
-        self.assert_(not domain_match("192.168.1.1", ".168.1.1"))
-        self.assert_(domain_match("x.y.com", "x.Y.com"))
-        self.assert_(domain_match("x.y.com", ".Y.com"))
-        self.assert_(not domain_match("x.y.com", "Y.com"))
-        self.assert_(domain_match("a.b.c.com", ".c.com"))
-        self.assert_(not domain_match(".c.com", "a.b.c.com"))
-        self.assert_(domain_match("example.local", ".local"))
-        self.assert_(not domain_match("blah.blah", ""))
-        self.assert_(not domain_match("", ".rhubarb.rhubarb"))
-        self.assert_(domain_match("", ""))
+        self.assertTrue(domain_match("192.168.1.1", "192.168.1.1"))
+        self.assertTrue(not domain_match("192.168.1.1", ".168.1.1"))
+        self.assertTrue(domain_match("x.y.com", "x.Y.com"))
+        self.assertTrue(domain_match("x.y.com", ".Y.com"))
+        self.assertTrue(not domain_match("x.y.com", "Y.com"))
+        self.assertTrue(domain_match("a.b.c.com", ".c.com"))
+        self.assertTrue(not domain_match(".c.com", "a.b.c.com"))
+        self.assertTrue(domain_match("example.local", ".local"))
+        self.assertTrue(not domain_match("blah.blah", ""))
+        self.assertTrue(not domain_match("", ".rhubarb.rhubarb"))
+        self.assertTrue(domain_match("", ""))
 
-        self.assert_(user_domain_match("acme.com", "acme.com"))
-        self.assert_(not user_domain_match("acme.com", ".acme.com"))
-        self.assert_(user_domain_match("rhubarb.acme.com", ".acme.com"))
-        self.assert_(user_domain_match("www.rhubarb.acme.com", ".acme.com"))
-        self.assert_(user_domain_match("x.y.com", "x.Y.com"))
-        self.assert_(user_domain_match("x.y.com", ".Y.com"))
-        self.assert_(not user_domain_match("x.y.com", "Y.com"))
-        self.assert_(user_domain_match("y.com", "Y.com"))
-        self.assert_(not user_domain_match(".y.com", "Y.com"))
-        self.assert_(user_domain_match(".y.com", ".Y.com"))
-        self.assert_(user_domain_match("x.y.com", ".com"))
-        self.assert_(not user_domain_match("x.y.com", "com"))
-        self.assert_(not user_domain_match("x.y.com", "m"))
-        self.assert_(not user_domain_match("x.y.com", ".m"))
-        self.assert_(not user_domain_match("x.y.com", ""))
-        self.assert_(not user_domain_match("x.y.com", "."))
-        self.assert_(user_domain_match("192.168.1.1", "192.168.1.1"))
+        self.assertTrue(user_domain_match("acme.com", "acme.com"))
+        self.assertTrue(not user_domain_match("acme.com", ".acme.com"))
+        self.assertTrue(user_domain_match("rhubarb.acme.com", ".acme.com"))
+        self.assertTrue(user_domain_match("www.rhubarb.acme.com", ".acme.com"))
+        self.assertTrue(user_domain_match("x.y.com", "x.Y.com"))
+        self.assertTrue(user_domain_match("x.y.com", ".Y.com"))
+        self.assertTrue(not user_domain_match("x.y.com", "Y.com"))
+        self.assertTrue(user_domain_match("y.com", "Y.com"))
+        self.assertTrue(not user_domain_match(".y.com", "Y.com"))
+        self.assertTrue(user_domain_match(".y.com", ".Y.com"))
+        self.assertTrue(user_domain_match("x.y.com", ".com"))
+        self.assertTrue(not user_domain_match("x.y.com", "com"))
+        self.assertTrue(not user_domain_match("x.y.com", "m"))
+        self.assertTrue(not user_domain_match("x.y.com", ".m"))
+        self.assertTrue(not user_domain_match("x.y.com", ""))
+        self.assertTrue(not user_domain_match("x.y.com", "."))
+        self.assertTrue(user_domain_match("192.168.1.1", "192.168.1.1"))
         # not both HDNs, so must string-compare equal to match
-        self.assert_(not user_domain_match("192.168.1.1", ".168.1.1"))
-        self.assert_(not user_domain_match("192.168.1.1", "."))
+        self.assertTrue(not user_domain_match("192.168.1.1", ".168.1.1"))
+        self.assertTrue(not user_domain_match("192.168.1.1", "."))
         # empty string is a special case
-        self.assert_(not user_domain_match("192.168.1.1", ""))
+        self.assertTrue(not user_domain_match("192.168.1.1", ""))
 
     def test_wrong_domain(self):
         # Cookies whose effective request-host name does not domain-match the
@@ -789,7 +789,7 @@
         self.assertEquals(len(c), 2)
         # ... and check is doesn't get returned
         c.add_cookie_header(req)
-        self.assert_(not req.has_header("Cookie"))
+        self.assertTrue(not req.has_header("Cookie"))
 
     def test_domain_block(self):
         pol = DefaultCookiePolicy(
@@ -813,7 +813,7 @@
         self.assertEquals(len(c), 1)
         req = urllib.request.Request("http://www.roadrunner.net/")
         c.add_cookie_header(req)
-        self.assert_((req.has_header("Cookie") and
+        self.assertTrue((req.has_header("Cookie") and
                       req.has_header("Cookie2")))
 
         c.clear()
@@ -829,7 +829,7 @@
         self.assertEquals(len(c), 2)
         # ... and check is doesn't get returned
         c.add_cookie_header(req)
-        self.assert_(not req.has_header("Cookie"))
+        self.assertTrue(not req.has_header("Cookie"))
 
     def test_secure(self):
         for ns in True, False:
@@ -847,10 +847,10 @@
                 url = "http://www.acme.com/"
                 int(c, url, "foo1=bar%s%s" % (vs, whitespace))
                 int(c, url, "foo2=bar%s; secure%s" %  (vs, whitespace))
-                self.assert_(
+                self.assertTrue(
                     not c._cookies["www.acme.com"]["/"]["foo1"].secure,
                     "non-secure cookie registered secure")
-                self.assert_(
+                self.assertTrue(
                     c._cookies["www.acme.com"]["/"]["foo2"].secure,
                     "secure cookie registered non-secure")
 
@@ -868,7 +868,7 @@
         req = urllib.request.Request(url)
         self.assertEquals(len(c), 1)
         c.add_cookie_header(req)
-        self.assert_(req.has_header("Cookie"))
+        self.assertTrue(req.has_header("Cookie"))
 
     def test_domain_mirror(self):
         pol = DefaultCookiePolicy(rfc2965=True)
@@ -877,21 +877,21 @@
         url = "http://foo.bar.com/"
         interact_2965(c, url, "spam=eggs; Version=1")
         h = interact_2965(c, url)
-        self.assert_("Domain" not in h,
+        self.assertTrue("Domain" not in h,
                      "absent domain returned with domain present")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         interact_2965(c, url, 'spam=eggs; Version=1; Domain=.bar.com')
         h = interact_2965(c, url)
-        self.assert_('$Domain=".bar.com"' in h, "domain not returned")
+        self.assertTrue('$Domain=".bar.com"' in h, "domain not returned")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         # note missing initial dot in Domain
         interact_2965(c, url, 'spam=eggs; Version=1; Domain=bar.com')
         h = interact_2965(c, url)
-        self.assert_('$Domain="bar.com"' in h, "domain not returned")
+        self.assertTrue('$Domain="bar.com"' in h, "domain not returned")
 
     def test_path_mirror(self):
         pol = DefaultCookiePolicy(rfc2965=True)
@@ -900,14 +900,14 @@
         url = "http://foo.bar.com/"
         interact_2965(c, url, "spam=eggs; Version=1")
         h = interact_2965(c, url)
-        self.assert_("Path" not in h,
+        self.assertTrue("Path" not in h,
                      "absent path returned with path present")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         interact_2965(c, url, 'spam=eggs; Version=1; Path=/')
         h = interact_2965(c, url)
-        self.assert_('$Path="/"' in h, "path not returned")
+        self.assertTrue('$Path="/"' in h, "path not returned")
 
     def test_port_mirror(self):
         pol = DefaultCookiePolicy(rfc2965=True)
@@ -916,28 +916,28 @@
         url = "http://foo.bar.com/"
         interact_2965(c, url, "spam=eggs; Version=1")
         h = interact_2965(c, url)
-        self.assert_("Port" not in h,
+        self.assertTrue("Port" not in h,
                      "absent port returned with port present")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         interact_2965(c, url, "spam=eggs; Version=1; Port")
         h = interact_2965(c, url)
-        self.assert_(re.search("\$Port([^=]|$)", h),
+        self.assertTrue(re.search("\$Port([^=]|$)", h),
                      "port with no value not returned with no value")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         interact_2965(c, url, 'spam=eggs; Version=1; Port="80"')
         h = interact_2965(c, url)
-        self.assert_('$Port="80"' in h,
+        self.assertTrue('$Port="80"' in h,
                      "port with single value not returned with single value")
 
         c = CookieJar(pol)
         url = "http://foo.bar.com/"
         interact_2965(c, url, 'spam=eggs; Version=1; Port="80,8080"')
         h = interact_2965(c, url)
-        self.assert_('$Port="80,8080"' in h,
+        self.assertTrue('$Port="80,8080"' in h,
                      "port with multiple values not returned with multiple "
                      "values")
 
@@ -948,7 +948,7 @@
                       'Comment="does anybody read these?"; '
                       'CommentURL="http://foo.bar.net/comment.html"')
         h = interact_2965(c, url)
-        self.assert_(
+        self.assertTrue(
             "Comment" not in h,
             "Comment or CommentURL cookie-attributes returned to server")
 
@@ -977,7 +977,7 @@
         for i in range(4):
             i = 0
             for c in cs:
-                self.assert_(isinstance(c, Cookie))
+                self.assertTrue(isinstance(c, Cookie))
                 self.assertEquals(c.version, versions[i])
                 self.assertEquals(c.name, names[i])
                 self.assertEquals(c.domain, domains[i])
@@ -1030,7 +1030,7 @@
         headers = ["Set-Cookie: c=foo; expires=Foo Bar 12 33:22:11 2000"]
         c = cookiejar_from_cookie_headers(headers)
         cookie = c._cookies["www.example.com"]["/"]["c"]
-        self.assert_(cookie.expires is None)
+        self.assertTrue(cookie.expires is None)
 
 
 class LWPCookieTests(TestCase):
@@ -1104,7 +1104,7 @@
         c.add_cookie_header(req)
 
         h = req.get_header("Cookie")
-        self.assert_("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
+        self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
                      "CUSTOMER=WILE_E_COYOTE" in h)
 
         headers.append('Set-Cookie: SHIPPING=FEDEX; path=/foo')
@@ -1115,7 +1115,7 @@
         c.add_cookie_header(req)
 
         h = req.get_header("Cookie")
-        self.assert_("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
+        self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
                      "CUSTOMER=WILE_E_COYOTE" in h and
                      "SHIPPING=FEDEX" not in h)
 
@@ -1123,7 +1123,7 @@
         c.add_cookie_header(req)
 
         h = req.get_header("Cookie")
-        self.assert_(("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
+        self.assertTrue(("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and
                       "CUSTOMER=WILE_E_COYOTE" in h and
                       h.startswith("SHIPPING=FEDEX;")))
 
@@ -1174,7 +1174,7 @@
         req = urllib.request.Request("http://www.acme.com/ammo")
         c.add_cookie_header(req)
 
-        self.assert_(re.search(r"PART_NUMBER=RIDING_ROCKET_0023;\s*"
+        self.assertTrue(re.search(r"PART_NUMBER=RIDING_ROCKET_0023;\s*"
                                "PART_NUMBER=ROCKET_LAUNCHER_0001",
                                req.get_header("Cookie")))
 
@@ -1209,7 +1209,7 @@
         cookie = interact_2965(
             c, 'http://www.acme.com/acme/login',
             'Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"')
-        self.assert_(not cookie)
+        self.assertTrue(not cookie)
 
         #
         #   3.  User Agent -> Server
@@ -1231,7 +1231,7 @@
         cookie = interact_2965(c, 'http://www.acme.com/acme/pickitem',
                                'Part_Number="Rocket_Launcher_0001"; '
                                'Version="1"; Path="/acme"');
-        self.assert_(re.search(
+        self.assertTrue(re.search(
             r'^\$Version="?1"?; Customer="?WILE_E_COYOTE"?; \$Path="/acme"$',
             cookie))
 
@@ -1256,10 +1256,10 @@
         cookie = interact_2965(c, "http://www.acme.com/acme/shipping",
                                'Shipping="FedEx"; Version="1"; Path="/acme"')
 
-        self.assert_(re.search(r'^\$Version="?1"?;', cookie))
-        self.assert_(re.search(r'Part_Number="?Rocket_Launcher_0001"?;'
+        self.assertTrue(re.search(r'^\$Version="?1"?;', cookie))
+        self.assertTrue(re.search(r'Part_Number="?Rocket_Launcher_0001"?;'
                                '\s*\$Path="\/acme"', cookie))
-        self.assert_(re.search(r'Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"',
+        self.assertTrue(re.search(r'Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"',
                                cookie))
 
         #
@@ -1281,7 +1281,7 @@
         #       Transaction is complete.
 
         cookie = interact_2965(c, "http://www.acme.com/acme/process")
-        self.assert_(
+        self.assertTrue(
             re.search(r'Shipping="?FedEx"?;\s*\$Path="\/acme"', cookie) and
             "WILE_E_COYOTE" in cookie)
 
@@ -1330,7 +1330,7 @@
         # than once.
 
         cookie = interact_2965(c, "http://www.acme.com/acme/ammo/...")
-        self.assert_(
+        self.assertTrue(
             re.search(r"Riding_Rocket_0023.*Rocket_Launcher_0001", cookie))
 
         # A subsequent request by the user agent to the (same) server for a URL of
@@ -1343,7 +1343,7 @@
         # the server.
 
         cookie = interact_2965(c, "http://www.acme.com/acme/parts/")
-        self.assert_("Rocket_Launcher_0001" in cookie and
+        self.assertTrue("Rocket_Launcher_0001" in cookie and
                      "Riding_Rocket_0023" not in cookie)
 
     def test_rejection(self):
@@ -1357,7 +1357,7 @@
         # illegal domain (no embedded dots)
         cookie = interact_2965(c, "http://www.acme.com",
                                'foo=bar; domain=".com"; version=1')
-        self.assert_(not c)
+        self.assertTrue(not c)
 
         # legal domain
         cookie = interact_2965(c, "http://www.acme.com",
@@ -1449,11 +1449,11 @@
             c, "http://www.acme.com/foo%2f%25/<<%0anew\345/\346\370\345",
             'bar=baz; path="/foo/"; version=1');
         version_re = re.compile(r'^\$version=\"?1\"?', re.I)
-        self.assert_("foo=bar" in cookie and version_re.search(cookie))
+        self.assertTrue("foo=bar" in cookie and version_re.search(cookie))
 
         cookie = interact_2965(
             c, "http://www.acme.com/foo/%25/<<%0anew\345/\346\370\345")
-        self.assert_(not cookie)
+        self.assertTrue(not cookie)
 
         # unicode URL doesn't raise exception
         cookie = interact_2965(c, "http://www.acme.com/\xfc")
@@ -1493,11 +1493,11 @@
 
         new_c = save_and_restore(c, True)
         self.assertEquals(len(new_c), 6)  # none discarded
-        self.assert_("name='foo1', value='bar'" in repr(new_c))
+        self.assertTrue("name='foo1', value='bar'" in repr(new_c))
 
         new_c = save_and_restore(c, False)
         self.assertEquals(len(new_c), 4)  # 2 of them discarded on save
-        self.assert_("name='foo1', value='bar'" in repr(new_c))
+        self.assertTrue("name='foo1', value='bar'" in repr(new_c))
 
     def test_netscape_misc(self):
         # Some additional Netscape cookies tests.
@@ -1519,7 +1519,7 @@
 
         req = urllib.request.Request("http://foo.bar.acme.com/foo")
         c.add_cookie_header(req)
-        self.assert_(
+        self.assertTrue(
             "PART_NUMBER=3,4" in req.get_header("Cookie") and
             "Customer=WILE_E_COYOTE" in req.get_header("Cookie"))
 
@@ -1530,11 +1530,11 @@
                       "foo1=bar; PORT; Discard; Version=1;")
         cookie = interact_2965(c, "http://example/",
                                'foo2=bar; domain=".local"; Version=1')
-        self.assert_("foo1=bar" in cookie)
+        self.assertTrue("foo1=bar" in cookie)
 
         interact_2965(c, "http://example/", 'foo3=bar; Version=1')
         cookie = interact_2965(c, "http://example/")
-        self.assert_("foo2=bar" in cookie and len(c) == 3)
+        self.assertTrue("foo2=bar" in cookie and len(c) == 3)
 
     def test_intranet_domains_ns(self):
         c = CookieJar(DefaultCookiePolicy(rfc2965 = False))
@@ -1542,10 +1542,10 @@
         cookie = interact_netscape(c, "http://example/",
                                    'foo2=bar; domain=.local')
         self.assertEquals(len(c), 2)
-        self.assert_("foo1=bar" in cookie)
+        self.assertTrue("foo1=bar" in cookie)
 
         cookie = interact_netscape(c, "http://example/")
-        self.assert_("foo2=bar" in cookie)
+        self.assertTrue("foo2=bar" in cookie)
         self.assertEquals(len(c), 2)
 
     def test_empty_path(self):
@@ -1614,7 +1614,7 @@
             key = "%s_after" % cookie.value
             counter[key] = counter[key] + 1
 
-        self.assert_(not (
+        self.assertTrue(not (
             # a permanent cookie got lost accidently
             counter["perm_after"] != counter["perm_before"] or
             # a session cookie hasn't been cleared
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index d43c82d..2d76f7a 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -265,7 +265,7 @@
         # and into the socket.
 
         # default -- use global socket timeout
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(30)
         try:
             httpConn = client.HTTPConnection(HOST, TimeoutTest.PORT)
@@ -276,7 +276,7 @@
         httpConn.close()
 
         # no timeout -- do not use global socket default
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(30)
         try:
             httpConn = client.HTTPConnection(HOST, TimeoutTest.PORT,
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
index 837d4a6..13e4030 100644
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -217,9 +217,9 @@
 
     def check_status_and_reason(self, response, status, data=None):
         body = response.read()
-        self.assert_(response)
+        self.assertTrue(response)
         self.assertEquals(response.status, status)
-        self.assert_(response.reason != None)
+        self.assertTrue(response.reason != None)
         if data:
             self.assertEqual(data, body)
 
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py
index cc6792a..70169e0 100644
--- a/Lib/test/test_imp.py
+++ b/Lib/test/test_imp.py
@@ -12,7 +12,7 @@
     """Very basic test of import lock functions."""
 
     def verify_lock_state(self, expected):
-        self.failUnlessEqual(imp.lock_held(), expected,
+        self.assertEqual(imp.lock_held(), expected,
                              "expected imp.lock_held() to be %r" % expected)
     def testLock(self):
         LOOPS = 50
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index 8196865..44e67c3 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -172,12 +172,12 @@
         # import x.y.z binds x in the current namespace
         import test as x
         import test.support
-        self.assert_(x is test, x.__name__)
-        self.assert_(hasattr(test.support, "__file__"))
+        self.assertTrue(x is test, x.__name__)
+        self.assertTrue(hasattr(test.support, "__file__"))
 
         # import x.y.z as w binds z as w
         import test.support as y
-        self.assert_(y is test.support, y.__name__)
+        self.assertTrue(y is test.support, y.__name__)
 
     def test_import_initless_directory_warning(self):
         with warnings.catch_warnings():
@@ -195,7 +195,7 @@
         sys.path.insert(0, os.curdir)
         try:
             mod = __import__(TESTFN)
-            self.assert_(TESTFN in sys.modules, "expected module in sys.modules")
+            self.assertTrue(TESTFN in sys.modules, "expected module in sys.modules")
             self.assertEquals(mod.a, 1, "module has wrong attribute values")
             self.assertEquals(mod.b, 2, "module has wrong attribute values")
 
@@ -212,7 +212,7 @@
             self.assertRaises(ZeroDivisionError, imp.reload, mod)
             # But we still expect the module to be in sys.modules.
             mod = sys.modules.get(TESTFN)
-            self.failIf(mod is None, "expected module to still be in sys.modules")
+            self.assertFalse(mod is None, "expected module to still be in sys.modules")
 
             # We should have replaced a w/ 10, but the old b value should
             # stick.
@@ -234,12 +234,12 @@
         sys.path.insert(0, os.curdir)
         try:
             mod = __import__(TESTFN)
-            self.failUnless(mod.__file__.endswith('.py'))
+            self.assertTrue(mod.__file__.endswith('.py'))
             os.remove(source)
             del sys.modules[TESTFN]
             mod = __import__(TESTFN)
             ext = mod.__file__[-4:]
-            self.failUnless(ext in ('.pyc', '.pyo'), ext)
+            self.assertTrue(ext in ('.pyc', '.pyo'), ext)
         finally:
             sys.path.pop(0)
             remove_files(TESTFN)
diff --git a/Lib/test/test_importhooks.py b/Lib/test/test_importhooks.py
index f267f79..bf2870d 100644
--- a/Lib/test/test_importhooks.py
+++ b/Lib/test/test_importhooks.py
@@ -177,7 +177,7 @@
 
         TestImporter.modules['reloadmodule'] = (False, test_co)
         import reloadmodule
-        self.failIf(hasattr(reloadmodule,'reloaded'))
+        self.assertFalse(hasattr(reloadmodule,'reloaded'))
 
         import hooktestpackage.newrel
         self.assertEqual(hooktestpackage.newrel.get_name(),
diff --git a/Lib/test/test_index.py b/Lib/test/test_index.py
index 31609c3..ae905c2 100644
--- a/Lib/test/test_index.py
+++ b/Lib/test/test_index.py
@@ -59,10 +59,10 @@
     def test_error(self):
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
-        self.failUnlessRaises(TypeError, operator.index, self.o)
-        self.failUnlessRaises(TypeError, operator.index, self.n)
-        self.failUnlessRaises(TypeError, slice(self.o).indices, 0)
-        self.failUnlessRaises(TypeError, slice(self.n).indices, 0)
+        self.assertRaises(TypeError, operator.index, self.o)
+        self.assertRaises(TypeError, operator.index, self.n)
+        self.assertRaises(TypeError, slice(self.o).indices, 0)
+        self.assertRaises(TypeError, slice(self.n).indices, 0)
 
 
 class SeqTestCase(unittest.TestCase):
@@ -114,11 +114,11 @@
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
         indexobj = lambda x, obj: obj.seq[x]
-        self.failUnlessRaises(TypeError, indexobj, self.o, self)
-        self.failUnlessRaises(TypeError, indexobj, self.n, self)
+        self.assertRaises(TypeError, indexobj, self.o, self)
+        self.assertRaises(TypeError, indexobj, self.n, self)
         sliceobj = lambda x, obj: obj.seq[x:]
-        self.failUnlessRaises(TypeError, sliceobj, self.o, self)
-        self.failUnlessRaises(TypeError, sliceobj, self.n, self)
+        self.assertRaises(TypeError, sliceobj, self.o, self)
+        self.assertRaises(TypeError, sliceobj, self.n, self)
 
 
 class ListTestCase(SeqTestCase):
@@ -151,7 +151,7 @@
 
         lst = [5, 6, 7, 8, 9, 11]
         l2 = lst.__imul__(self.n)
-        self.assert_(l2 is lst)
+        self.assertTrue(l2 is lst)
         self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3)
 
 
@@ -188,8 +188,8 @@
                          (0, maxsize, 1))
 
     def test_sequence_repeat(self):
-        self.failUnlessRaises(OverflowError, lambda: "a" * self.pos)
-        self.failUnlessRaises(OverflowError, lambda: "a" * self.neg)
+        self.assertRaises(OverflowError, lambda: "a" * self.pos)
+        self.assertRaises(OverflowError, lambda: "a" * self.neg)
 
 
 def test_main():
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 37be205..c1df23e 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -52,13 +52,13 @@
 
     def istest(self, predicate, exp):
         obj = eval(exp)
-        self.failUnless(predicate(obj), '%s(%s)' % (predicate.__name__, exp))
+        self.assertTrue(predicate(obj), '%s(%s)' % (predicate.__name__, exp))
 
         for other in self.predicates - set([predicate]):
             if predicate == inspect.isgeneratorfunction and\
                other == inspect.isfunction:
                 continue
-            self.failIf(other(obj), 'not %s(%s)' % (other.__name__, exp))
+            self.assertFalse(other(obj), 'not %s(%s)' % (other.__name__, exp))
 
 def generator_function_example(self):
     for i in range(2):
@@ -91,15 +91,15 @@
             self.istest(inspect.isgetsetdescriptor,
                         'type(tb.tb_frame).f_locals')
         else:
-            self.failIf(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals))
+            self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals))
         if hasattr(types, 'MemberDescriptorType'):
             self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days')
         else:
-            self.failIf(inspect.ismemberdescriptor(datetime.timedelta.days))
+            self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
 
     def test_isroutine(self):
-        self.assert_(inspect.isroutine(mod.spam))
-        self.assert_(inspect.isroutine([].count))
+        self.assertTrue(inspect.isroutine(mod.spam))
+        self.assertTrue(inspect.isroutine([].count))
 
     def test_isclass(self):
         self.istest(inspect.isclass, 'mod.StupidGit')
@@ -117,8 +117,8 @@
         x = C()
         x.a = 42
         members = dict(inspect.getmembers(x))
-        self.assert_('a' in members)
-        self.assert_('b' not in members)
+        self.assertTrue('a' in members)
+        self.assertTrue('b' not in members)
 
 
 class TestInterpreterStack(IsTestBase):
@@ -132,7 +132,7 @@
         self.istest(inspect.isframe, 'mod.fr')
 
     def test_stack(self):
-        self.assert_(len(mod.st) >= 5)
+        self.assertTrue(len(mod.st) >= 5)
         self.assertEqual(revise(*mod.st[0][1:]),
              (modfile, 16, 'eggs', ['    st = inspect.stack()\n'], 0))
         self.assertEqual(revise(*mod.st[1][1:]),
@@ -449,25 +449,25 @@
             datablob = '1'
 
         attrs = attrs_wo_objs(A)
-        self.assert_(('s', 'static method', A) in attrs, 'missing static method')
-        self.assert_(('c', 'class method', A) in attrs, 'missing class method')
-        self.assert_(('p', 'property', A) in attrs, 'missing property')
-        self.assert_(('m', 'method', A) in attrs,
+        self.assertTrue(('s', 'static method', A) in attrs, 'missing static method')
+        self.assertTrue(('c', 'class method', A) in attrs, 'missing class method')
+        self.assertTrue(('p', 'property', A) in attrs, 'missing property')
+        self.assertTrue(('m', 'method', A) in attrs,
             'missing plain method: %r' % attrs)
-        self.assert_(('m1', 'method', A) in attrs, 'missing plain method')
-        self.assert_(('datablob', 'data', A) in attrs, 'missing data')
+        self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method')
+        self.assertTrue(('datablob', 'data', A) in attrs, 'missing data')
 
         class B(A):
 
             def m(self): pass
 
         attrs = attrs_wo_objs(B)
-        self.assert_(('s', 'static method', A) in attrs, 'missing static method')
-        self.assert_(('c', 'class method', A) in attrs, 'missing class method')
-        self.assert_(('p', 'property', A) in attrs, 'missing property')
-        self.assert_(('m', 'method', B) in attrs, 'missing plain method')
-        self.assert_(('m1', 'method', A) in attrs, 'missing plain method')
-        self.assert_(('datablob', 'data', A) in attrs, 'missing data')
+        self.assertTrue(('s', 'static method', A) in attrs, 'missing static method')
+        self.assertTrue(('c', 'class method', A) in attrs, 'missing class method')
+        self.assertTrue(('p', 'property', A) in attrs, 'missing property')
+        self.assertTrue(('m', 'method', B) in attrs, 'missing plain method')
+        self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method')
+        self.assertTrue(('datablob', 'data', A) in attrs, 'missing data')
 
 
         class C(A):
@@ -476,24 +476,24 @@
             def c(self): pass
 
         attrs = attrs_wo_objs(C)
-        self.assert_(('s', 'static method', A) in attrs, 'missing static method')
-        self.assert_(('c', 'method', C) in attrs, 'missing plain method')
-        self.assert_(('p', 'property', A) in attrs, 'missing property')
-        self.assert_(('m', 'method', C) in attrs, 'missing plain method')
-        self.assert_(('m1', 'method', A) in attrs, 'missing plain method')
-        self.assert_(('datablob', 'data', A) in attrs, 'missing data')
+        self.assertTrue(('s', 'static method', A) in attrs, 'missing static method')
+        self.assertTrue(('c', 'method', C) in attrs, 'missing plain method')
+        self.assertTrue(('p', 'property', A) in attrs, 'missing property')
+        self.assertTrue(('m', 'method', C) in attrs, 'missing plain method')
+        self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method')
+        self.assertTrue(('datablob', 'data', A) in attrs, 'missing data')
 
         class D(B, C):
 
             def m1(self): pass
 
         attrs = attrs_wo_objs(D)
-        self.assert_(('s', 'static method', A) in attrs, 'missing static method')
-        self.assert_(('c', 'method', C) in attrs, 'missing plain method')
-        self.assert_(('p', 'property', A) in attrs, 'missing property')
-        self.assert_(('m', 'method', B) in attrs, 'missing plain method')
-        self.assert_(('m1', 'method', D) in attrs, 'missing plain method')
-        self.assert_(('datablob', 'data', A) in attrs, 'missing data')
+        self.assertTrue(('s', 'static method', A) in attrs, 'missing static method')
+        self.assertTrue(('c', 'method', C) in attrs, 'missing plain method')
+        self.assertTrue(('p', 'property', A) in attrs, 'missing property')
+        self.assertTrue(('m', 'method', B) in attrs, 'missing plain method')
+        self.assertTrue(('m1', 'method', D) in attrs, 'missing plain method')
+        self.assertTrue(('datablob', 'data', A) in attrs, 'missing data')
 
 def test_main():
     run_unittest(TestDecorators, TestRetrievingSourceCode, TestOneliners,
diff --git a/Lib/test/test_int.py b/Lib/test/test_int.py
index dd40ef6..d56e1f0 100644
--- a/Lib/test/test_int.py
+++ b/Lib/test/test_int.py
@@ -52,15 +52,15 @@
         s = repr(-1-sys.maxsize)
         x = int(s)
         self.assertEqual(x+1, -sys.maxsize)
-        self.assert_(isinstance(x, int))
+        self.assertTrue(isinstance(x, int))
         # should return long
         self.assertEqual(int(s[1:]), sys.maxsize+1)
 
         # should return long
         x = int(1e100)
-        self.assert_(isinstance(x, int))
+        self.assertTrue(isinstance(x, int))
         x = int(-1e100)
-        self.assert_(isinstance(x, int))
+        self.assertTrue(isinstance(x, int))
 
 
         # SF bug 434186:  0x80000000/2 != 0x80000000>>1.
@@ -78,7 +78,7 @@
         self.assertRaises(ValueError, int, '123\x00 245', 20)
 
         x = int('1' * 600)
-        self.assert_(isinstance(x, int))
+        self.assertTrue(isinstance(x, int))
 
         self.assertRaises(TypeError, int, 1, 12)
 
@@ -96,8 +96,8 @@
         self.assertRaises(ValueError, int, "0b", 0)
 
         # Bug #3236: Return small longs from PyLong_FromString
-        self.assert_(int("10") is 10)
-        self.assert_(int("-1") is -1)
+        self.assertTrue(int("10") is 10)
+        self.assertTrue(int("-1") is -1)
 
         # SF bug 1334662: int(string, base) wrong answers
         # Various representations of 2**32 evaluated to 0
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 407a8a4..a9094d9 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -391,7 +391,7 @@
         with self.open(support.TESTFN, "ab") as f:
             self.assertEqual(f.tell(), 3)
         with self.open(support.TESTFN, "a") as f:
-            self.assert_(f.tell() > 0)
+            self.assertTrue(f.tell() > 0)
 
     def test_destructor(self):
         record = []
@@ -509,7 +509,7 @@
         wr = weakref.ref(f)
         del f
         support.gc_collect()
-        self.assert_(wr() is None, wr)
+        self.assertTrue(wr() is None, wr)
         with self.open(support.TESTFN, "rb") as f:
             self.assertEqual(f.read(), b"abcxxx")
 
@@ -615,8 +615,8 @@
         if s:
             # The destructor *may* have printed an unraisable error, check it
             self.assertEqual(len(s.splitlines()), 1)
-            self.assert_(s.startswith("Exception IOError: "), s)
-            self.assert_(s.endswith(" ignored"), s)
+            self.assertTrue(s.startswith("Exception IOError: "), s)
+            self.assertTrue(s.endswith(" ignored"), s)
 
     def test_repr(self):
         raw = self.MockRawIO()
@@ -713,7 +713,7 @@
         self.assertEquals(b"e", bufio.read(1))
         self.assertEquals(b"fg", bufio.read())
         self.assertEquals(b"", bufio.peek(1))
-        self.assert_(None is bufio.read())
+        self.assertTrue(None is bufio.read())
         self.assertEquals(b"", bufio.read())
 
     def test_read_past_eof(self):
@@ -815,7 +815,7 @@
         wr = weakref.ref(f)
         del f
         support.gc_collect()
-        self.assert_(wr() is None, wr)
+        self.assertTrue(wr() is None, wr)
 
 class PyBufferedReaderTest(BufferedReaderTest):
     tp = pyio.BufferedReader
@@ -864,7 +864,7 @@
         flushed = b"".join(writer._write_stack)
         # At least (total - 8) bytes were implicitly flushed, perhaps more
         # depending on the implementation.
-        self.assert_(flushed.startswith(contents[:-8]), flushed)
+        self.assertTrue(flushed.startswith(contents[:-8]), flushed)
 
     def check_writes(self, intermediate_func):
         # Lots of writes, test the flushed output is as expected.
@@ -1075,7 +1075,7 @@
         wr = weakref.ref(f)
         del f
         support.gc_collect()
-        self.assert_(wr() is None, wr)
+        self.assertTrue(wr() is None, wr)
         with self.open(support.TESTFN, "rb") as f:
             self.assertEqual(f.read(), b"123xxx")
 
@@ -1585,7 +1585,7 @@
         t = self.TextIOWrapper(b, encoding="utf8")
         self.assertEqual(t.encoding, "utf8")
         t = self.TextIOWrapper(b)
-        self.assert_(t.encoding is not None)
+        self.assertTrue(t.encoding is not None)
         codecs.lookup(t.encoding)
 
     def test_encoding_errors_reading(self):
@@ -1755,8 +1755,8 @@
         if s:
             # The destructor *may* have printed an unraisable error, check it
             self.assertEqual(len(s.splitlines()), 1)
-            self.assert_(s.startswith("Exception IOError: "), s)
-            self.assert_(s.endswith(" ignored"), s)
+            self.assertTrue(s.startswith("Exception IOError: "), s)
+            self.assertTrue(s.endswith(" ignored"), s)
 
     # Systematic tests of the text I/O API
 
@@ -2074,7 +2074,7 @@
         wr = weakref.ref(t)
         del t
         support.gc_collect()
-        self.assert_(wr() is None, wr)
+        self.assertTrue(wr() is None, wr)
         with self.open(support.TESTFN, "rb") as f:
             self.assertEqual(f.read(), b"456def")
 
@@ -2298,7 +2298,7 @@
         wr = weakref.ref(c)
         del c, b
         support.gc_collect()
-        self.assert_(wr() is None, wr)
+        self.assertTrue(wr() is None, wr)
 
     def test_abcs(self):
         # Test the visible base classes are ABCs.
diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py
index dcb6695..50597ca 100644
--- a/Lib/test/test_ioctl.py
+++ b/Lib/test/test_ioctl.py
@@ -24,7 +24,7 @@
         tty = open("/dev/tty", "r")
         r = fcntl.ioctl(tty, termios.TIOCGPGRP, "    ")
         rpgrp = struct.unpack("i", r)[0]
-        self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
+        self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
 
     def test_ioctl_mutate(self):
         import array
@@ -34,7 +34,7 @@
         r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1)
         rpgrp = buf[0]
         self.assertEquals(r, 0)
-        self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
+        self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
 
     def test_ioctl_signed_unsigned_code_param(self):
         if not pty:
diff --git a/Lib/test/test_iter.py b/Lib/test/test_iter.py
index 7788502..a826598 100644
--- a/Lib/test/test_iter.py
+++ b/Lib/test/test_iter.py
@@ -75,7 +75,7 @@
         seq = list(range(10))
         it = iter(seq)
         it2 = iter(it)
-        self.assert_(it is it2)
+        self.assertTrue(it is it2)
 
     # Test that for loops over iterators work
     def test_iter_for_loop(self):
@@ -542,23 +542,23 @@
     def test_in_and_not_in(self):
         for sc5 in IteratingSequenceClass(5), SequenceClass(5):
             for i in range(5):
-                self.assert_(i in sc5)
+                self.assertTrue(i in sc5)
             for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5:
-                self.assert_(i not in sc5)
+                self.assertTrue(i not in sc5)
 
         self.assertRaises(TypeError, lambda: 3 in 12)
         self.assertRaises(TypeError, lambda: 3 not in map)
 
         d = {"one": 1, "two": 2, "three": 3, 1j: 2j}
         for k in d:
-            self.assert_(k in d)
-            self.assert_(k not in d.values())
+            self.assertTrue(k in d)
+            self.assertTrue(k not in d.values())
         for v in d.values():
-            self.assert_(v in d.values())
-            self.assert_(v not in d)
+            self.assertTrue(v in d.values())
+            self.assertTrue(v not in d)
         for k, v in d.items():
-            self.assert_((k, v) in d.items())
-            self.assert_((v, k) not in d.items())
+            self.assertTrue((k, v) in d.items())
+            self.assertTrue((v, k) not in d.items())
 
         f = open(TESTFN, "w")
         try:
@@ -569,9 +569,9 @@
         try:
             for chunk in "abc":
                 f.seek(0, 0)
-                self.assert_(chunk not in f)
+                self.assertTrue(chunk not in f)
                 f.seek(0, 0)
-                self.assert_((chunk + "\n") in f)
+                self.assertTrue((chunk + "\n") in f)
         finally:
             f.close()
             try:
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index af2efa0..d917262 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -131,7 +131,7 @@
                     self.assertEqual(len(c), r)                         # r-length combinations
                     self.assertEqual(len(set(c)), r)                    # no duplicate elements
                     self.assertEqual(list(c), sorted(c))                # keep original ordering
-                    self.assert_(all(e in values for e in c))           # elements taken from input iterable
+                    self.assertTrue(all(e in values for e in c))           # elements taken from input iterable
                     self.assertEqual(list(c),
                                      [e for e in values if e in c])      # comb is a subsequence of the input iterable
                 self.assertEqual(result, list(combinations1(values, r))) # matches first pure python version
@@ -195,14 +195,14 @@
                 if n == 0 or r <= 1:
                     self.assertEquals(result, regular_combs)            # cases that should be identical
                 else:
-                    self.assert_(set(result) >= set(regular_combs))     # rest should be supersets of regular combs
+                    self.assertTrue(set(result) >= set(regular_combs))     # rest should be supersets of regular combs
 
                 for c in result:
                     self.assertEqual(len(c), r)                         # r-length combinations
                     noruns = [k for k,v in groupby(c)]                  # combo without consecutive repeats
                     self.assertEqual(len(noruns), len(set(noruns)))     # no repeats other than consecutive
                     self.assertEqual(list(c), sorted(c))                # keep original ordering
-                    self.assert_(all(e in values for e in c))           # elements taken from input iterable
+                    self.assertTrue(all(e in values for e in c))           # elements taken from input iterable
                     self.assertEqual(noruns,
                                      [e for e in values if e in c])     # comb is a subsequence of the input iterable
                 self.assertEqual(result, list(cwr1(values, r)))         # matches first pure python version
@@ -265,7 +265,7 @@
                 for p in result:
                     self.assertEqual(len(p), r)                         # r-length permutations
                     self.assertEqual(len(set(p)), r)                    # no duplicate elements
-                    self.assert_(all(e in values for e in p))           # elements taken from input iterable
+                    self.assertTrue(all(e in values for e in p))           # elements taken from input iterable
                 self.assertEqual(result, list(permutations1(values, r))) # matches first pure python version
                 self.assertEqual(result, list(permutations2(values, r))) # matches second pure python version
                 if r == n:
@@ -836,7 +836,7 @@
         # tee pass-through to copyable iterator
         a, b = tee('abc')
         c, d = tee(a)
-        self.assert_(a is c)
+        self.assertTrue(a is c)
 
         # test tee_new
         t1, t2 = tee('abc')
@@ -844,7 +844,7 @@
         self.assertRaises(TypeError, tnew)
         self.assertRaises(TypeError, tnew, 10)
         t3 = tnew(t1)
-        self.assert_(list(t1) == list(t2) == list(t3) == list('abc'))
+        self.assertTrue(list(t1) == list(t2) == list(t3) == list('abc'))
 
         # test that tee objects are weak referencable
         a, b = tee(range(10))
@@ -1356,7 +1356,7 @@
                 Subclass(newarg=1)
             except TypeError as err:
                 # we expect type errors because of wrong argument count
-                self.failIf("does not take keyword arguments" in err.args[0])
+                self.assertFalse("does not take keyword arguments" in err.args[0])
 
 
 libreftest = """ Doctest for examples in the library reference: libitertools.tex
diff --git a/Lib/test/test_kqueue.py b/Lib/test/test_kqueue.py
index 42ef958..dd1ecc8 100644
--- a/Lib/test/test_kqueue.py
+++ b/Lib/test/test_kqueue.py
@@ -15,10 +15,10 @@
 class TestKQueue(unittest.TestCase):
     def test_create_queue(self):
         kq = select.kqueue()
-        self.assert_(kq.fileno() > 0, kq.fileno())
-        self.assert_(not kq.closed)
+        self.assertTrue(kq.fileno() > 0, kq.fileno())
+        self.assertTrue(not kq.closed)
         kq.close()
-        self.assert_(kq.closed)
+        self.assertTrue(kq.closed)
         self.assertRaises(ValueError, kq.fileno)
 
     def test_create_event(self):
@@ -34,8 +34,8 @@
         self.assertEqual(ev.udata, 0)
         self.assertEqual(ev, ev)
         self.assertNotEqual(ev, other)
-        self.assert_(ev < other)
-        self.assert_(other >= ev)
+        self.assertTrue(ev < other)
+        self.assertTrue(other >= ev)
         for op in lt, le, gt, ge:
             self.assertRaises(TypeError, op, ev, None)
             self.assertRaises(TypeError, op, ev, 1)
diff --git a/Lib/test/test_largefile.py b/Lib/test/test_largefile.py
index 1e868e0..7fd3e0e 100644
--- a/Lib/test/test_largefile.py
+++ b/Lib/test/test_largefile.py
@@ -139,7 +139,7 @@
         for pos in (2**31-1, 2**31, 2**31+1):
             with self.open(TESTFN, 'rb') as f:
                 f.seek(pos)
-                self.assert_(f.seekable())
+                self.assertTrue(f.seekable())
 
 
 def test_main():
diff --git a/Lib/test/test_list.py b/Lib/test/test_list.py
index 279afec..3510bd5 100644
--- a/Lib/test/test_list.py
+++ b/Lib/test/test_list.py
@@ -9,7 +9,7 @@
         l0_3 = [0, 1, 2, 3]
         l0_3_bis = list(l0_3)
         self.assertEqual(l0_3, l0_3_bis)
-        self.assert_(l0_3 is not l0_3_bis)
+        self.assertTrue(l0_3 is not l0_3_bis)
         self.assertEqual(list(()), [])
         self.assertEqual(list((0, 1, 2, 3)), [0, 1, 2, 3])
         self.assertEqual(list(''), [])
@@ -39,11 +39,11 @@
 
     def test_truth(self):
         super().test_truth()
-        self.assert_(not [])
-        self.assert_([42])
+        self.assertTrue(not [])
+        self.assertTrue([42])
 
     def test_identity(self):
-        self.assert_([] is not [])
+        self.assertTrue([] is not [])
 
     def test_len(self):
         super().test_len()
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 69ec491..72b26bb 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -99,7 +99,7 @@
         finally:
             logging._releaseLock()
 
-    def assert_log_lines(self, expected_values, stream=None):
+    def assertTruelog_lines(self, expected_values, stream=None):
         """Match the collected log lines against the regular expression
         self.expected_log_pat, and compare the extracted group values to
         the expected_values list of tuples."""
@@ -165,7 +165,7 @@
 
         INF.debug(m())
 
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('ERR', 'CRITICAL', '1'),
             ('ERR', 'ERROR', '2'),
             ('INF', 'CRITICAL', '3'),
@@ -197,7 +197,7 @@
         INF_ERR.info(m())
         INF_ERR.debug(m())
 
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('INF.ERR', 'CRITICAL', '1'),
             ('INF.ERR', 'ERROR', '2'),
         ])
@@ -228,7 +228,7 @@
         INF_ERR_UNDEF.info(m())
         INF_ERR_UNDEF.debug(m())
 
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('INF.UNDEF', 'CRITICAL', '1'),
             ('INF.UNDEF', 'ERROR', '2'),
             ('INF.UNDEF', 'WARNING', '3'),
@@ -256,7 +256,7 @@
         GRANDCHILD.debug(m())
         CHILD.debug(m())
 
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('INF.BADPARENT.UNDEF', 'CRITICAL', '1'),
             ('INF.BADPARENT.UNDEF', 'INFO', '2'),
             ('INF.BADPARENT', 'CRITICAL', '3'),
@@ -285,7 +285,7 @@
             spam_eggs_fish.info(self.next_message())  # Good.
             spam_bakedbeans.info(self.next_message())
 
-            self.assert_log_lines([
+            self.assertTruelog_lines([
                 ('spam.eggs', 'INFO', '2'),
                 ('spam.eggs.fish', 'INFO', '3'),
             ])
@@ -367,7 +367,7 @@
         self.root_logger.setLevel(VERBOSE)
         # Levels >= 'Verbose' are good.
         self.log_at_all_levels(self.root_logger)
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('Verbose', '5'),
             ('Sociable', '6'),
             ('Effusive', '7'),
@@ -382,7 +382,7 @@
         try:
             # Levels >= 'Sociable' are good.
             self.log_at_all_levels(self.root_logger)
-            self.assert_log_lines([
+            self.assertTruelog_lines([
                 ('Sociable', '6'),
                 ('Effusive', '7'),
                 ('Terse', '8'),
@@ -413,12 +413,12 @@
                 ('Taciturn', '9'),
                 ('Silent', '10'),
             ]
-            self.assert_log_lines(first_lines)
+            self.assertTruelog_lines(first_lines)
 
             specific_filter = VerySpecificFilter()
             self.root_logger.addFilter(specific_filter)
             self.log_at_all_levels(self.root_logger)
-            self.assert_log_lines(first_lines + [
+            self.assertTruelog_lines(first_lines + [
                 # Not only 'Garrulous' is still missing, but also 'Sociable'
                 # and 'Taciturn'
                 ('Boring', '11'),
@@ -458,9 +458,9 @@
         # The memory handler flushes to its target handler based on specific
         #  criteria (message count and message level).
         self.mem_logger.debug(self.next_message())
-        self.assert_log_lines([])
+        self.assertTruelog_lines([])
         self.mem_logger.info(self.next_message())
-        self.assert_log_lines([])
+        self.assertTruelog_lines([])
         # This will flush because the level is >= logging.WARNING
         self.mem_logger.warn(self.next_message())
         lines = [
@@ -468,19 +468,19 @@
             ('INFO', '2'),
             ('WARNING', '3'),
         ]
-        self.assert_log_lines(lines)
+        self.assertTruelog_lines(lines)
         for n in (4, 14):
             for i in range(9):
                 self.mem_logger.debug(self.next_message())
-            self.assert_log_lines(lines)
+            self.assertTruelog_lines(lines)
             # This will flush because it's the 10th message since the last
             #  flush.
             self.mem_logger.debug(self.next_message())
             lines = lines + [('DEBUG', str(i)) for i in range(n, n + 10)]
-            self.assert_log_lines(lines)
+            self.assertTruelog_lines(lines)
 
         self.mem_logger.debug(self.next_message())
-        self.assert_log_lines(lines)
+        self.assertTruelog_lines(lines)
 
 
 class ExceptionFormatter(logging.Formatter):
@@ -650,11 +650,11 @@
             logger.info(self.next_message())
             # Outputs a message
             logger.error(self.next_message())
-            self.assert_log_lines([
+            self.assertTruelog_lines([
                 ('ERROR', '2'),
             ], stream=output)
             # Original logger output is empty.
-            self.assert_log_lines([])
+            self.assertTruelog_lines([])
 
     def test_config1_ok(self, config=config1):
         # A config file defining a sub-parser as well.
@@ -664,12 +664,12 @@
             # Both will output a message
             logger.info(self.next_message())
             logger.error(self.next_message())
-            self.assert_log_lines([
+            self.assertTruelog_lines([
                 ('INFO', '1'),
                 ('ERROR', '2'),
             ], stream=output)
             # Original logger output is empty.
-            self.assert_log_lines([])
+            self.assertTruelog_lines([])
 
     def test_config2_failure(self):
         # A simple config file which overrides the default settings.
@@ -692,7 +692,7 @@
             self.assertEquals(output.getvalue(),
                 "ERROR:root:just testing\nGot a [RuntimeError]\n")
             # Original logger output is empty
-            self.assert_log_lines([])
+            self.assertTruelog_lines([])
 
     def test_config5_ok(self):
         self.test_config1_ok(config=self.config5)
@@ -826,7 +826,7 @@
             key = id(obj), repr(obj)
             self._survivors[key] = weakref.ref(obj)
 
-    def _assert_survival(self):
+    def _assertTruesurvival(self):
         """Assert that all objects watched for survival have survived."""
         # Trigger cycle breaking.
         gc.collect()
@@ -847,16 +847,16 @@
         foo.setLevel(logging.DEBUG)
         self.root_logger.debug(self.next_message())
         foo.debug(self.next_message())
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('foo', 'DEBUG', '2'),
         ])
         del foo
         # foo has survived.
-        self._assert_survival()
+        self._assertTruesurvival()
         # foo has retained its settings.
         bar = logging.getLogger("foo")
         bar.debug(self.next_message())
-        self.assert_log_lines([
+        self.assertTruelog_lines([
             ('foo', 'DEBUG', '2'),
             ('foo', 'DEBUG', '3'),
         ])
@@ -881,7 +881,7 @@
             # check we wrote exactly those bytes, ignoring trailing \n etc
             f = open(fn, encoding="utf8")
             try:
-                self.failUnlessEqual(f.read().rstrip(), data)
+                self.assertEqual(f.read().rstrip(), data)
             finally:
                 f.close()
         finally:
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index 53d3e6b..1b5e6d4 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -65,7 +65,7 @@
     # The sign of the number is also random.
 
     def getran(self, ndigits):
-        self.assert_(ndigits > 0)
+        self.assertTrue(ndigits > 0)
         nbits_hi = ndigits * SHIFT
         nbits_lo = nbits_hi - SHIFT + 1
         answer = 0
@@ -74,13 +74,13 @@
         while nbits < nbits_lo:
             bits = (r >> 1) + 1
             bits = min(bits, nbits_hi - nbits)
-            self.assert_(1 <= bits <= SHIFT)
+            self.assertTrue(1 <= bits <= SHIFT)
             nbits = nbits + bits
             answer = answer << bits
             if r & 1:
                 answer = answer | ((1 << bits) - 1)
             r = int(random.random() * (SHIFT * 2))
-        self.assert_(nbits_lo <= nbits <= nbits_hi)
+        self.assertTrue(nbits_lo <= nbits <= nbits_hi)
         if random.random() < 0.5:
             answer = -answer
         return answer
@@ -106,9 +106,9 @@
         eq(r, r2, Frm("divmod returns different mod than %% for %r and %r", x, y))
         eq(x, q*y + r, Frm("x != q*y + r after divmod on x=%r, y=%r", x, y))
         if y > 0:
-            self.assert_(0 <= r < y, Frm("bad mod from divmod on %r and %r", x, y))
+            self.assertTrue(0 <= r < y, Frm("bad mod from divmod on %r and %r", x, y))
         else:
-            self.assert_(y < r <= 0, Frm("bad mod from divmod on %r and %r", x, y))
+            self.assertTrue(y < r <= 0, Frm("bad mod from divmod on %r and %r", x, y))
 
     def test_division(self):
         digits = list(range(1, MAXDIGITS+1)) + list(range(KARATSUBA_CUTOFF,
@@ -538,7 +538,7 @@
             y = int(x)
         except OverflowError:
             self.fail("int(long(sys.maxsize) + 1) mustn't overflow")
-        self.assert_(isinstance(y, int),
+        self.assertTrue(isinstance(y, int),
             "int(long(sys.maxsize) + 1) should have returned long")
 
         x = hugeneg_aslong - 1
@@ -546,14 +546,14 @@
             y = int(x)
         except OverflowError:
             self.fail("int(long(-sys.maxsize-1) - 1) mustn't overflow")
-        self.assert_(isinstance(y, int),
+        self.assertTrue(isinstance(y, int),
                "int(long(-sys.maxsize-1) - 1) should have returned long")
 
         class long2(int):
             pass
         x = long2(1<<100)
         y = int(x)
-        self.assert_(type(y) is int,
+        self.assertTrue(type(y) is int,
             "overflowing int conversion must return long not long subtype")
 
 # ----------------------------------- tests of auto int->long conversion
@@ -958,7 +958,7 @@
             self.assertEqual(k, len(bin(x).lstrip('-0b')))
             # Behaviour as specified in the docs
             if x != 0:
-                self.assert_(2**(k-1) <= abs(x) < 2**k)
+                self.assertTrue(2**(k-1) <= abs(x) < 2**k)
             else:
                 self.assertEqual(k, 0)
             # Alternative definition: x.bit_length() == 1 + floor(log_2(x))
@@ -995,7 +995,7 @@
                 got = round(k+offset, -1)
                 expected = v+offset
                 self.assertEqual(got, expected)
-                self.assert_(type(got) is int)
+                self.assertTrue(type(got) is int)
 
         # larger second argument
         self.assertEqual(round(-150, -2), -200)
@@ -1034,7 +1034,7 @@
             got = round(10**k + 324678, -3)
             expect = 10**k + 325000
             self.assertEqual(got, expect)
-            self.assert_(type(got) is int)
+            self.assertTrue(type(got) is int)
 
         # nonnegative second argument: round(x, n) should just return x
         for n in range(5):
@@ -1042,7 +1042,7 @@
                 x = random.randrange(-10000, 10000)
                 got = round(x, n)
                 self.assertEqual(got, x)
-                self.assert_(type(got) is int)
+                self.assertTrue(type(got) is int)
         for huge_n in 2**31-1, 2**31, 2**63-1, 2**63, 2**100, 10**100:
             self.assertEqual(round(8979323, huge_n), 8979323)
 
@@ -1051,7 +1051,7 @@
             x = random.randrange(-10000, 10000)
             got = round(x)
             self.assertEqual(got, x)
-            self.assert_(type(got) is int)
+            self.assertTrue(type(got) is int)
 
         # bad second argument
         bad_exponents = ('brian', 2.0, 0j, None)
diff --git a/Lib/test/test_macpath.py b/Lib/test/test_macpath.py
index 368d8f5..e13865d 100644
--- a/Lib/test/test_macpath.py
+++ b/Lib/test/test_macpath.py
@@ -10,37 +10,37 @@
 
     def test_isabs(self):
         isabs = macpath.isabs
-        self.assert_(isabs("xx:yy"))
-        self.assert_(isabs("xx:yy:"))
-        self.assert_(isabs("xx:"))
-        self.failIf(isabs("foo"))
-        self.failIf(isabs(":foo"))
-        self.failIf(isabs(":foo:bar"))
-        self.failIf(isabs(":foo:bar:"))
+        self.assertTrue(isabs("xx:yy"))
+        self.assertTrue(isabs("xx:yy:"))
+        self.assertTrue(isabs("xx:"))
+        self.assertFalse(isabs("foo"))
+        self.assertFalse(isabs(":foo"))
+        self.assertFalse(isabs(":foo:bar"))
+        self.assertFalse(isabs(":foo:bar:"))
 
-        self.assert_(isabs(b"xx:yy"))
-        self.assert_(isabs(b"xx:yy:"))
-        self.assert_(isabs(b"xx:"))
-        self.failIf(isabs(b"foo"))
-        self.failIf(isabs(b":foo"))
-        self.failIf(isabs(b":foo:bar"))
-        self.failIf(isabs(b":foo:bar:"))
+        self.assertTrue(isabs(b"xx:yy"))
+        self.assertTrue(isabs(b"xx:yy:"))
+        self.assertTrue(isabs(b"xx:"))
+        self.assertFalse(isabs(b"foo"))
+        self.assertFalse(isabs(b":foo"))
+        self.assertFalse(isabs(b":foo:bar"))
+        self.assertFalse(isabs(b":foo:bar:"))
 
 
     def test_commonprefix(self):
         commonprefix = macpath.commonprefix
-        self.assert_(commonprefix(["home:swenson:spam", "home:swen:spam"])
+        self.assertTrue(commonprefix(["home:swenson:spam", "home:swen:spam"])
                      == "home:swen")
-        self.assert_(commonprefix([":home:swen:spam", ":home:swen:eggs"])
+        self.assertTrue(commonprefix([":home:swen:spam", ":home:swen:eggs"])
                      == ":home:swen:")
-        self.assert_(commonprefix([":home:swen:spam", ":home:swen:spam"])
+        self.assertTrue(commonprefix([":home:swen:spam", ":home:swen:spam"])
                      == ":home:swen:spam")
 
-        self.assert_(commonprefix([b"home:swenson:spam", b"home:swen:spam"])
+        self.assertTrue(commonprefix([b"home:swenson:spam", b"home:swen:spam"])
                      == b"home:swen")
-        self.assert_(commonprefix([b":home:swen:spam", b":home:swen:eggs"])
+        self.assertTrue(commonprefix([b":home:swen:spam", b":home:swen:eggs"])
                      == b":home:swen:")
-        self.assert_(commonprefix([b":home:swen:spam", b":home:swen:spam"])
+        self.assertTrue(commonprefix([b":home:swen:spam", b":home:swen:spam"])
                      == b":home:swen:spam")
 
     def test_split(self):
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 655b639..8994340 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -21,16 +21,16 @@
 
     def _check_sample(self, msg):
         # Inspect a mailbox.Message representation of the sample message
-        self.assert_(isinstance(msg, email.message.Message))
-        self.assert_(isinstance(msg, mailbox.Message))
+        self.assertTrue(isinstance(msg, email.message.Message))
+        self.assertTrue(isinstance(msg, mailbox.Message))
         for key, value in _sample_headers.items():
-            self.assert_(value in msg.get_all(key))
-        self.assert_(msg.is_multipart())
+            self.assertTrue(value in msg.get_all(key))
+        self.assertTrue(msg.is_multipart())
         self.assertEqual(len(msg.get_payload()), len(_sample_payloads))
         for i, payload in enumerate(_sample_payloads):
             part = msg.get_payload(i)
-            self.assert_(isinstance(part, email.message.Message))
-            self.assert_(not isinstance(part, mailbox.Message))
+            self.assertTrue(isinstance(part, email.message.Message))
+            self.assertTrue(not isinstance(part, mailbox.Message))
             self.assertEqual(part.get_payload(), payload)
 
     def _delete_recursively(self, target):
@@ -92,7 +92,7 @@
         self.assertEqual(len(self._box), 2)
         method(key0)
         l = len(self._box)
-        self.assert_(l == 1, "actual l: %s" % l)
+        self.assertTrue(l == 1, "actual l: %s" % l)
         self.assertRaises(KeyError, lambda: self._box[key0])
         self.assertRaises(KeyError, lambda: method(key0))
         self.assertEqual(self._box.get_string(key1), self._template % 1)
@@ -100,7 +100,7 @@
         self.assertEqual(len(self._box), 2)
         method(key2)
         l = len(self._box)
-        self.assert_(l == 1, "actual l: %s" % l)
+        self.assertTrue(l == 1, "actual l: %s" % l)
         self.assertRaises(KeyError, lambda: self._box[key2])
         self.assertRaises(KeyError, lambda: method(key2))
         self.assertEqual(self._box.get_string(key1), self._template % 1)
@@ -127,8 +127,8 @@
         msg = self._box.get(key0)
         self.assertEqual(msg['from'], 'foo')
         self.assertEqual(msg.get_payload(), '0')
-        self.assert_(self._box.get('foo') is None)
-        self.assert_(self._box.get('foo', False) is False)
+        self.assertTrue(self._box.get('foo') is None)
+        self.assertTrue(self._box.get('foo', False) is False)
         self._box.close()
         self._box = self._factory(self._path)
         key1 = self._box.add(self._template % 1)
@@ -151,7 +151,7 @@
         key0 = self._box.add(self._template % 0)
         key1 = self._box.add(_sample_message)
         msg0 = self._box.get_message(key0)
-        self.assert_(isinstance(msg0, mailbox.Message))
+        self.assertTrue(isinstance(msg0, mailbox.Message))
         self.assertEqual(msg0['from'], 'foo')
         self.assertEqual(msg0.get_payload(), '0')
         self._check_sample(self._box.get_message(key1))
@@ -228,29 +228,29 @@
             count = 0
             for value in returned_values:
                 self.assertEqual(value['from'], 'foo')
-                self.assert_(int(value.get_payload()) < repetitions)
+                self.assertTrue(int(value.get_payload()) < repetitions)
                 count += 1
             self.assertEqual(len(values), count)
 
     def test_contains(self):
         # Check existence of keys using __contains__()
         method = self._box.__contains__
-        self.assert_(not method('foo'))
+        self.assertTrue(not method('foo'))
         key0 = self._box.add(self._template % 0)
-        self.assert_(method(key0))
-        self.assert_(not method('foo'))
+        self.assertTrue(method(key0))
+        self.assertTrue(not method('foo'))
         key1 = self._box.add(self._template % 1)
-        self.assert_(method(key1))
-        self.assert_(method(key0))
-        self.assert_(not method('foo'))
+        self.assertTrue(method(key1))
+        self.assertTrue(method(key0))
+        self.assertTrue(not method('foo'))
         self._box.remove(key0)
-        self.assert_(not method(key0))
-        self.assert_(method(key1))
-        self.assert_(not method('foo'))
+        self.assertTrue(not method(key0))
+        self.assertTrue(method(key1))
+        self.assertTrue(not method('foo'))
         self._box.remove(key1)
-        self.assert_(not method(key1))
-        self.assert_(not method(key0))
-        self.assert_(not method('foo'))
+        self.assertTrue(not method(key1))
+        self.assertTrue(not method(key0))
+        self.assertTrue(not method('foo'))
 
     def test_len(self, repetitions=10):
         # Get message count
@@ -297,7 +297,7 @@
         for i in range(iterations):
             self._box.add(self._template % i)
         for i, key in enumerate(keys):
-            self.assert_(self._box.get_string(key) == self._template % i)
+            self.assertTrue(self._box.get_string(key) == self._template % i)
         self._box.clear()
         self.assertEqual(len(self._box), 0)
         for i, key in enumerate(keys):
@@ -306,19 +306,19 @@
     def test_pop(self):
         # Get and remove a message using pop()
         key0 = self._box.add(self._template % 0)
-        self.assert_(key0 in self._box)
+        self.assertTrue(key0 in self._box)
         key1 = self._box.add(self._template % 1)
-        self.assert_(key1 in self._box)
+        self.assertTrue(key1 in self._box)
         self.assertEqual(self._box.pop(key0).get_payload(), '0')
-        self.assert_(key0 not in self._box)
-        self.assert_(key1 in self._box)
+        self.assertTrue(key0 not in self._box)
+        self.assertTrue(key1 in self._box)
         key2 = self._box.add(self._template % 2)
-        self.assert_(key2 in self._box)
+        self.assertTrue(key2 in self._box)
         self.assertEqual(self._box.pop(key2).get_payload(), '2')
-        self.assert_(key2 not in self._box)
-        self.assert_(key1 in self._box)
+        self.assertTrue(key2 not in self._box)
+        self.assertTrue(key1 in self._box)
         self.assertEqual(self._box.pop(key1).get_payload(), '1')
-        self.assert_(key1 not in self._box)
+        self.assertTrue(key1 not in self._box)
         self.assertEqual(len(self._box), 0)
 
     def test_popitem(self, iterations=10):
@@ -329,8 +329,8 @@
         seen = []
         for i in range(10):
             key, msg = self._box.popitem()
-            self.assert_(key in keys)
-            self.assert_(key not in seen)
+            self.assertTrue(key in keys)
+            self.assertTrue(key not in seen)
             seen.append(key)
             self.assertEqual(int(msg.get_payload()), keys.index(key))
         self.assertEqual(len(self._box), 0)
@@ -377,11 +377,11 @@
 
     def test_lock_unlock(self):
         # Lock and unlock the mailbox
-        self.assert_(not os.path.exists(self._get_lock_path()))
+        self.assertTrue(not os.path.exists(self._get_lock_path()))
         self._box.lock()
-        self.assert_(os.path.exists(self._get_lock_path()))
+        self.assertTrue(os.path.exists(self._get_lock_path()))
         self._box.unlock()
-        self.assert_(not os.path.exists(self._get_lock_path()))
+        self.assertTrue(not os.path.exists(self._get_lock_path()))
 
     def test_close(self):
         # Close mailbox and flush changes to disk
@@ -400,7 +400,7 @@
         keys = self._box.keys()
         self.assertEqual(len(keys), 3)
         for key in keys:
-            self.assert_(self._box.get_string(key) in contents)
+            self.assertTrue(self._box.get_string(key) in contents)
         oldbox.close()
 
     def test_dump_message(self):
@@ -469,7 +469,7 @@
         msg.set_subdir('cur')
         msg.set_info('foo')
         key = self._box.add(msg)
-        self.assert_(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' %
+        self.assertTrue(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' %
                                                  (key, self._box.colon))))
 
     def test_get_MM(self):
@@ -479,7 +479,7 @@
         msg.set_flags('RF')
         key = self._box.add(msg)
         msg_returned = self._box.get_message(key)
-        self.assert_(isinstance(msg_returned, mailbox.MaildirMessage))
+        self.assertTrue(isinstance(msg_returned, mailbox.MaildirMessage))
         self.assertEqual(msg_returned.get_subdir(), 'cur')
         self.assertEqual(msg_returned.get_flags(), 'FR')
 
@@ -519,7 +519,7 @@
         box = mailbox.Maildir(self._path, factory=FakeMessage)
         box.colon = self._box.colon
         msg2 = box.get_message(key)
-        self.assert_(isinstance(msg2, FakeMessage))
+        self.assertTrue(isinstance(msg2, FakeMessage))
 
     def test_initialize_new(self):
         # Initialize a non-existent mailbox
@@ -545,7 +545,7 @@
         for subdir in '', 'tmp', 'new', 'cur':
             path = os.path.join(self._path, subdir)
             mode = os.stat(path)[stat.ST_MODE]
-            self.assert_(stat.S_ISDIR(mode), "Not a directory: '%s'" % path)
+            self.assertTrue(stat.S_ISDIR(mode), "Not a directory: '%s'" % path)
 
     def test_list_folders(self):
         # List folders
@@ -561,7 +561,7 @@
         self._box.add_folder('foo.bar')
         folder0 = self._box.get_folder('foo.bar')
         folder0.add(self._template % 'bar')
-        self.assert_(os.path.isdir(os.path.join(self._path, '.foo.bar')))
+        self.assertTrue(os.path.isdir(os.path.join(self._path, '.foo.bar')))
         folder1 = self._box.get_folder('foo.bar')
         self.assertEqual(folder1.get_string(folder1.keys()[0]),
                          self._template % 'bar')
@@ -571,7 +571,7 @@
         self._box.add_folder('one')
         self._box.add_folder('two')
         self.assertEqual(len(self._box.list_folders()), 2)
-        self.assert_(set(self._box.list_folders()) == set(('one', 'two')))
+        self.assertTrue(set(self._box.list_folders()) == set(('one', 'two')))
         self._box.remove_folder('one')
         self.assertEqual(len(self._box.list_folders()), 1)
         self.assertEqual(set(self._box.list_folders()), set(('two',)))
@@ -596,14 +596,14 @@
         f.write("@")
         f.close()
         self._box.clean()
-        self.assert_(os.path.exists(foo_path))
-        self.assert_(os.path.exists(bar_path))
+        self.assertTrue(os.path.exists(foo_path))
+        self.assertTrue(os.path.exists(bar_path))
         foo_stat = os.stat(foo_path)
         os.utime(foo_path, (time.time() - 129600 - 2,
                             foo_stat.st_mtime))
         self._box.clean()
-        self.assert_(not os.path.exists(foo_path))
-        self.assert_(os.path.exists(bar_path))
+        self.assertTrue(not os.path.exists(foo_path))
+        self.assertTrue(os.path.exists(bar_path))
 
     def test_create_tmp(self, repetitions=10):
         # Create files in tmp directory
@@ -623,13 +623,13 @@
                                                                 "tmp")),
                              "File in wrong location: '%s'" % head)
             match = pattern.match(tail)
-            self.assert_(match is not None, "Invalid file name: '%s'" % tail)
+            self.assertTrue(match is not None, "Invalid file name: '%s'" % tail)
             groups = match.groups()
             if previous_groups is not None:
-                self.assert_(int(groups[0] >= previous_groups[0]),
+                self.assertTrue(int(groups[0] >= previous_groups[0]),
                              "Non-monotonic seconds: '%s' before '%s'" %
                              (previous_groups[0], groups[0]))
-                self.assert_(int(groups[1] >= previous_groups[1]) or
+                self.assertTrue(int(groups[1] >= previous_groups[1]) or
                              groups[0] != groups[1],
                              "Non-monotonic milliseconds: '%s' before '%s'" %
                              (previous_groups[1], groups[1]))
@@ -691,10 +691,10 @@
             return None
         box = self._factory(self._path, factory=dummy_factory)
         folder = box.add_folder('folder1')
-        self.assert_(folder._factory is dummy_factory)
+        self.assertTrue(folder._factory is dummy_factory)
 
         folder1_alias = box.get_folder('folder1')
-        self.assert_(folder1_alias._factory is dummy_factory)
+        self.assertTrue(folder1_alias._factory is dummy_factory)
 
     def test_directory_in_folder (self):
         # Test that mailboxes still work if there's a stray extra directory
@@ -721,7 +721,7 @@
             os.umask(orig_umask)
         path = os.path.join(self._path, self._box._lookup(key))
         mode = os.stat(path).st_mode
-        self.assert_(mode & 0o111 == 0)
+        self.assertTrue(mode & 0o111 == 0)
 
     def test_folder_file_perms(self):
         # From bug #3228, we want to verify that the file created inside a Maildir
@@ -802,7 +802,7 @@
         self._box = self._factory(self._path)
         self.assertEqual(len(self._box), 3)
         for key in self._box.keys():
-            self.assert_(self._box.get_string(key) in values)
+            self.assertTrue(self._box.get_string(key) in values)
         self._box.close()
         self.assertEqual(mtime, os.path.getmtime(self._path))
 
@@ -859,7 +859,7 @@
         self._box.lock()
         key2 = self._box.add(msg)
         self._box.flush()
-        self.assert_(self._box._locked)
+        self.assertTrue(self._box._locked)
         self._box.close()
 
 
@@ -913,15 +913,15 @@
         new_folder = self._box.add_folder('foo.bar')
         folder0 = self._box.get_folder('foo.bar')
         folder0.add(self._template % 'bar')
-        self.assert_(os.path.isdir(os.path.join(self._path, 'foo.bar')))
+        self.assertTrue(os.path.isdir(os.path.join(self._path, 'foo.bar')))
         folder1 = self._box.get_folder('foo.bar')
         self.assertEqual(folder1.get_string(folder1.keys()[0]),
                          self._template % 'bar')
 
         # Test for bug #1569790: verify that folders returned by .get_folder()
         # use the same factory function.
-        self.assert_(new_folder._factory is self._box._factory)
-        self.assert_(folder0._factory is self._box._factory)
+        self.assertTrue(new_folder._factory is self._box._factory)
+        self.assertTrue(folder0._factory is self._box._factory)
 
     def test_add_and_remove_folders(self):
         # Delete folders
@@ -990,7 +990,7 @@
                      {'foo':[key0,key1,key3], 'unseen':[key0], 'bar':[key3],
                       'replied':[key3]})
         self._box.pack()
-        self.assert_(self._box.keys() == [1, 2, 3])
+        self.assertTrue(self._box.keys() == [1, 2, 3])
         key0 = key0
         key1 = key0 + 1
         key2 = key1 + 1
@@ -1082,11 +1082,11 @@
         # Initialize without arguments
         msg = self._factory()
         self._post_initialize_hook(msg)
-        self.assert_(isinstance(msg, email.message.Message))
-        self.assert_(isinstance(msg, mailbox.Message))
-        self.assert_(isinstance(msg, self._factory))
+        self.assertTrue(isinstance(msg, email.message.Message))
+        self.assertTrue(isinstance(msg, mailbox.Message))
+        self.assertTrue(isinstance(msg, self._factory))
         self.assertEqual(msg.keys(), [])
-        self.assert_(not msg.is_multipart())
+        self.assertTrue(not msg.is_multipart())
         self.assertEqual(msg.get_payload(), None)
 
     def test_initialize_incorrectly(self):
@@ -1159,7 +1159,7 @@
     def test_date(self):
         # Use get_date() and set_date()
         msg = mailbox.MaildirMessage(_sample_message)
-        self.assert_(abs(msg.get_date() - time.time()) < 60)
+        self.assertTrue(abs(msg.get_date() - time.time()) < 60)
         msg.set_date(0.0)
         self.assertEqual(msg.get_date(), 0.0)
 
@@ -1234,7 +1234,7 @@
         # Check contents of "From " line
         if sender is None:
             sender = "MAILER-DAEMON"
-        self.assert_(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:"
+        self.assertTrue(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:"
                               r"\d{2} \d{4}", msg.get_from()) is not None)
 
 
@@ -1309,19 +1309,19 @@
         msg = mailbox.BabylMessage(_sample_message)
         visible = msg.get_visible()
         self.assertEqual(visible.keys(), [])
-        self.assert_(visible.get_payload() is None)
+        self.assertTrue(visible.get_payload() is None)
         visible['User-Agent'] = 'FooBar 1.0'
         visible['X-Whatever'] = 'Blah'
         self.assertEqual(msg.get_visible().keys(), [])
         msg.set_visible(visible)
         visible = msg.get_visible()
-        self.assert_(visible.keys() == ['User-Agent', 'X-Whatever'])
-        self.assert_(visible['User-Agent'] == 'FooBar 1.0')
+        self.assertTrue(visible.keys() == ['User-Agent', 'X-Whatever'])
+        self.assertTrue(visible['User-Agent'] == 'FooBar 1.0')
         self.assertEqual(visible['X-Whatever'], 'Blah')
-        self.assert_(visible.get_payload() is None)
+        self.assertTrue(visible.get_payload() is None)
         msg.update_visible()
         self.assertEqual(visible.keys(), ['User-Agent', 'X-Whatever'])
-        self.assert_(visible.get_payload() is None)
+        self.assertTrue(visible.get_payload() is None)
         visible = msg.get_visible()
         self.assertEqual(visible.keys(), ['User-Agent', 'Date', 'From', 'To',
                                           'Subject'])
@@ -1423,7 +1423,7 @@
                 msg_mboxMMDF.set_flags(setting)
                 msg = mailbox.MaildirMessage(msg_mboxMMDF)
                 self.assertEqual(msg.get_flags(), result)
-                self.assert_(msg.get_date() == 0.0, msg.get_date())
+                self.assertTrue(msg.get_date() == 0.0, msg.get_date())
             msg_mboxMMDF.set_flags('O')
             self.assertEqual(mailbox.MaildirMessage(msg_mboxMMDF).get_subdir(),
                              'cur')
@@ -1655,7 +1655,7 @@
         proxy.seek(2, 0)
         self.assertEqual(proxy.read(), b'o' + linesep + b'bar' + linesep)
         proxy.seek(100)
-        self.failIf(proxy.read())
+        self.assertFalse(proxy.read())
 
     def _test_close(self, proxy):
         # Close a file
@@ -1820,36 +1820,36 @@
         # Test for regression on bug #117490:
         # Make sure the boxes attribute actually gets set.
         self.mbox = mailbox.Maildir(support.TESTFN)
-        #self.assert_(hasattr(self.mbox, "boxes"))
+        #self.assertTrue(hasattr(self.mbox, "boxes"))
         #self.assertEqual(len(self.mbox.boxes), 0)
-        self.assert_(self.mbox.next() is None)
-        self.assert_(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is None)
 
     def test_nonempty_maildir_cur(self):
         self.createMessage("cur")
         self.mbox = mailbox.Maildir(support.TESTFN)
         #self.assertEqual(len(self.mbox.boxes), 1)
-        self.assert_(self.mbox.next() is not None)
-        self.assert_(self.mbox.next() is None)
-        self.assert_(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is not None)
+        self.assertTrue(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is None)
 
     def test_nonempty_maildir_new(self):
         self.createMessage("new")
         self.mbox = mailbox.Maildir(support.TESTFN)
         #self.assertEqual(len(self.mbox.boxes), 1)
-        self.assert_(self.mbox.next() is not None)
-        self.assert_(self.mbox.next() is None)
-        self.assert_(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is not None)
+        self.assertTrue(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is None)
 
     def test_nonempty_maildir_both(self):
         self.createMessage("cur")
         self.createMessage("new")
         self.mbox = mailbox.Maildir(support.TESTFN)
         #self.assertEqual(len(self.mbox.boxes), 2)
-        self.assert_(self.mbox.next() is not None)
-        self.assert_(self.mbox.next() is not None)
-        self.assert_(self.mbox.next() is None)
-        self.assert_(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is not None)
+        self.assertTrue(self.mbox.next() is not None)
+        self.assertTrue(self.mbox.next() is None)
+        self.assertTrue(self.mbox.next() is None)
 
 ## End: tests from the original module (for backward compatibility).
 
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index d74f01f..2321a09 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -72,7 +72,7 @@
         self.ftest('acos(1)', math.acos(1), 0)
         self.assertRaises(ValueError, math.acos, INF)
         self.assertRaises(ValueError, math.acos, NINF)
-        self.assert_(math.isnan(math.acos(NAN)))
+        self.assertTrue(math.isnan(math.acos(NAN)))
 
     def testAcosh(self):
         self.assertRaises(TypeError, math.acosh)
@@ -82,7 +82,7 @@
         self.assertRaises(ValueError, math.acosh, -1)
         self.assertEquals(math.acosh(INF), INF)
         self.assertRaises(ValueError, math.acosh, NINF)
-        self.assert_(math.isnan(math.acosh(NAN)))
+        self.assertTrue(math.isnan(math.acosh(NAN)))
 
     def testAsin(self):
         self.assertRaises(TypeError, math.asin)
@@ -91,7 +91,7 @@
         self.ftest('asin(1)', math.asin(1), math.pi/2)
         self.assertRaises(ValueError, math.asin, INF)
         self.assertRaises(ValueError, math.asin, NINF)
-        self.assert_(math.isnan(math.asin(NAN)))
+        self.assertTrue(math.isnan(math.asin(NAN)))
 
     def testAsinh(self):
         self.assertRaises(TypeError, math.asinh)
@@ -100,7 +100,7 @@
         self.ftest('asinh(-1)', math.asinh(-1), -0.88137358701954305)
         self.assertEquals(math.asinh(INF), INF)
         self.assertEquals(math.asinh(NINF), NINF)
-        self.assert_(math.isnan(math.asinh(NAN)))
+        self.assertTrue(math.isnan(math.asinh(NAN)))
 
     def testAtan(self):
         self.assertRaises(TypeError, math.atan)
@@ -109,7 +109,7 @@
         self.ftest('atan(1)', math.atan(1), math.pi/4)
         self.ftest('atan(inf)', math.atan(INF), math.pi/2)
         self.ftest('atan(-inf)', math.atan(NINF), -math.pi/2)
-        self.assert_(math.isnan(math.atan(NAN)))
+        self.assertTrue(math.isnan(math.atan(NAN)))
 
     def testAtanh(self):
         self.assertRaises(TypeError, math.atan)
@@ -120,7 +120,7 @@
         self.assertRaises(ValueError, math.atanh, -1)
         self.assertRaises(ValueError, math.atanh, INF)
         self.assertRaises(ValueError, math.atanh, NINF)
-        self.assert_(math.isnan(math.atanh(NAN)))
+        self.assertTrue(math.isnan(math.atanh(NAN)))
 
     def testAtan2(self):
         self.assertRaises(TypeError, math.atan2)
@@ -137,7 +137,7 @@
         self.assertEqual(math.atan2(0., 0.), 0.)
         self.assertEqual(math.atan2(0., 2.3), 0.)
         self.assertEqual(math.atan2(0., INF), 0.)
-        self.assert_(math.isnan(math.atan2(0., NAN)))
+        self.assertTrue(math.isnan(math.atan2(0., NAN)))
         # math.atan2(-0, x)
         self.ftest('atan2(-0., -inf)', math.atan2(-0., NINF), -math.pi)
         self.ftest('atan2(-0., -2.3)', math.atan2(-0., -2.3), -math.pi)
@@ -145,7 +145,7 @@
         self.assertEqual(math.atan2(-0., 0.), -0.)
         self.assertEqual(math.atan2(-0., 2.3), -0.)
         self.assertEqual(math.atan2(-0., INF), -0.)
-        self.assert_(math.isnan(math.atan2(-0., NAN)))
+        self.assertTrue(math.isnan(math.atan2(-0., NAN)))
         # math.atan2(INF, x)
         self.ftest('atan2(inf, -inf)', math.atan2(INF, NINF), math.pi*3/4)
         self.ftest('atan2(inf, -2.3)', math.atan2(INF, -2.3), math.pi/2)
@@ -153,7 +153,7 @@
         self.ftest('atan2(inf, 0.)', math.atan2(INF, 0.0), math.pi/2)
         self.ftest('atan2(inf, 2.3)', math.atan2(INF, 2.3), math.pi/2)
         self.ftest('atan2(inf, inf)', math.atan2(INF, INF), math.pi/4)
-        self.assert_(math.isnan(math.atan2(INF, NAN)))
+        self.assertTrue(math.isnan(math.atan2(INF, NAN)))
         # math.atan2(NINF, x)
         self.ftest('atan2(-inf, -inf)', math.atan2(NINF, NINF), -math.pi*3/4)
         self.ftest('atan2(-inf, -2.3)', math.atan2(NINF, -2.3), -math.pi/2)
@@ -161,27 +161,27 @@
         self.ftest('atan2(-inf, 0.)', math.atan2(NINF, 0.0), -math.pi/2)
         self.ftest('atan2(-inf, 2.3)', math.atan2(NINF, 2.3), -math.pi/2)
         self.ftest('atan2(-inf, inf)', math.atan2(NINF, INF), -math.pi/4)
-        self.assert_(math.isnan(math.atan2(NINF, NAN)))
+        self.assertTrue(math.isnan(math.atan2(NINF, NAN)))
         # math.atan2(+finite, x)
         self.ftest('atan2(2.3, -inf)', math.atan2(2.3, NINF), math.pi)
         self.ftest('atan2(2.3, -0.)', math.atan2(2.3, -0.), math.pi/2)
         self.ftest('atan2(2.3, 0.)', math.atan2(2.3, 0.), math.pi/2)
         self.assertEqual(math.atan2(2.3, INF), 0.)
-        self.assert_(math.isnan(math.atan2(2.3, NAN)))
+        self.assertTrue(math.isnan(math.atan2(2.3, NAN)))
         # math.atan2(-finite, x)
         self.ftest('atan2(-2.3, -inf)', math.atan2(-2.3, NINF), -math.pi)
         self.ftest('atan2(-2.3, -0.)', math.atan2(-2.3, -0.), -math.pi/2)
         self.ftest('atan2(-2.3, 0.)', math.atan2(-2.3, 0.), -math.pi/2)
         self.assertEqual(math.atan2(-2.3, INF), -0.)
-        self.assert_(math.isnan(math.atan2(-2.3, NAN)))
+        self.assertTrue(math.isnan(math.atan2(-2.3, NAN)))
         # math.atan2(NAN, x)
-        self.assert_(math.isnan(math.atan2(NAN, NINF)))
-        self.assert_(math.isnan(math.atan2(NAN, -2.3)))
-        self.assert_(math.isnan(math.atan2(NAN, -0.)))
-        self.assert_(math.isnan(math.atan2(NAN, 0.)))
-        self.assert_(math.isnan(math.atan2(NAN, 2.3)))
-        self.assert_(math.isnan(math.atan2(NAN, INF)))
-        self.assert_(math.isnan(math.atan2(NAN, NAN)))
+        self.assertTrue(math.isnan(math.atan2(NAN, NINF)))
+        self.assertTrue(math.isnan(math.atan2(NAN, -2.3)))
+        self.assertTrue(math.isnan(math.atan2(NAN, -0.)))
+        self.assertTrue(math.isnan(math.atan2(NAN, 0.)))
+        self.assertTrue(math.isnan(math.atan2(NAN, 2.3)))
+        self.assertTrue(math.isnan(math.atan2(NAN, INF)))
+        self.assertTrue(math.isnan(math.atan2(NAN, NAN)))
 
     def testCeil(self):
         self.assertRaises(TypeError, math.ceil)
@@ -194,7 +194,7 @@
         self.ftest('ceil(-1.5)', math.ceil(-1.5), -1)
         #self.assertEquals(math.ceil(INF), INF)
         #self.assertEquals(math.ceil(NINF), NINF)
-        #self.assert_(math.isnan(math.ceil(NAN)))
+        #self.assertTrue(math.isnan(math.ceil(NAN)))
 
         class TestCeil:
             def __ceil__(self):
@@ -226,14 +226,14 @@
             self.assertEquals(copysign(INF, NINF), NINF)
             self.assertEquals(copysign(NINF, INF), INF)
             self.assertEquals(copysign(NINF, NINF), NINF)
-            self.assert_(math.isnan(copysign(NAN, 1.)))
-            self.assert_(math.isnan(copysign(NAN, INF)))
-            self.assert_(math.isnan(copysign(NAN, NINF)))
-            self.assert_(math.isnan(copysign(NAN, NAN)))
+            self.assertTrue(math.isnan(copysign(NAN, 1.)))
+            self.assertTrue(math.isnan(copysign(NAN, INF)))
+            self.assertTrue(math.isnan(copysign(NAN, NINF)))
+            self.assertTrue(math.isnan(copysign(NAN, NAN)))
             # copysign(INF, NAN) may be INF or it may be NINF, since
             # we don't know whether the sign bit of NAN is set on any
             # given platform.
-            self.assert_(math.isinf(copysign(INF, NAN)))
+            self.assertTrue(math.isinf(copysign(INF, NAN)))
             # similarly, copysign(2., NAN) could be 2. or -2.
             self.assertEquals(abs(copysign(2., NAN)), 2.)
 
@@ -244,12 +244,12 @@
         self.ftest('cos(pi/2)', math.cos(math.pi/2), 0)
         self.ftest('cos(pi)', math.cos(math.pi), -1)
         try:
-            self.assert_(math.isnan(math.cos(INF)))
-            self.assert_(math.isnan(math.cos(NINF)))
+            self.assertTrue(math.isnan(math.cos(INF)))
+            self.assertTrue(math.isnan(math.cos(NINF)))
         except ValueError:
             self.assertRaises(ValueError, math.cos, INF)
             self.assertRaises(ValueError, math.cos, NINF)
-        self.assert_(math.isnan(math.cos(NAN)))
+        self.assertTrue(math.isnan(math.cos(NAN)))
 
     def testCosh(self):
         self.assertRaises(TypeError, math.cosh)
@@ -257,7 +257,7 @@
         self.ftest('cosh(2)-2*cosh(1)**2', math.cosh(2)-2*math.cosh(1)**2, -1) # Thanks to Lambert
         self.assertEquals(math.cosh(INF), INF)
         self.assertEquals(math.cosh(NINF), INF)
-        self.assert_(math.isnan(math.cosh(NAN)))
+        self.assertTrue(math.isnan(math.cosh(NAN)))
 
     def testDegrees(self):
         self.assertRaises(TypeError, math.degrees)
@@ -272,7 +272,7 @@
         self.ftest('exp(1)', math.exp(1), math.e)
         self.assertEquals(math.exp(INF), INF)
         self.assertEquals(math.exp(NINF), 0.)
-        self.assert_(math.isnan(math.exp(NAN)))
+        self.assertTrue(math.isnan(math.exp(NAN)))
 
     def testFabs(self):
         self.assertRaises(TypeError, math.fabs)
@@ -309,7 +309,7 @@
         self.ftest('floor(-1.23e167)', math.floor(-1.23e167), -1.23e167)
         #self.assertEquals(math.ceil(INF), INF)
         #self.assertEquals(math.ceil(NINF), NINF)
-        #self.assert_(math.isnan(math.floor(NAN)))
+        #self.assertTrue(math.isnan(math.floor(NAN)))
 
         class TestFloor:
             def __floor__(self):
@@ -332,9 +332,9 @@
         self.ftest('fmod(-10,1)', math.fmod(-10,1), 0)
         self.ftest('fmod(-10,0.5)', math.fmod(-10,0.5), 0)
         self.ftest('fmod(-10,1.5)', math.fmod(-10,1.5), -1)
-        self.assert_(math.isnan(math.fmod(NAN, 1.)))
-        self.assert_(math.isnan(math.fmod(1., NAN)))
-        self.assert_(math.isnan(math.fmod(NAN, NAN)))
+        self.assertTrue(math.isnan(math.fmod(NAN, 1.)))
+        self.assertTrue(math.isnan(math.fmod(1., NAN)))
+        self.assertTrue(math.isnan(math.fmod(NAN, NAN)))
         self.assertRaises(ValueError, math.fmod, 1., 0.)
         self.assertRaises(ValueError, math.fmod, INF, 1.)
         self.assertRaises(ValueError, math.fmod, NINF, 1.)
@@ -362,7 +362,7 @@
 
         self.assertEquals(math.frexp(INF)[0], INF)
         self.assertEquals(math.frexp(NINF)[0], NINF)
-        self.assert_(math.isnan(math.frexp(NAN)[0]))
+        self.assertTrue(math.isnan(math.frexp(NAN)[0]))
 
     @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
                          "test requires IEEE 754 doubles")
@@ -464,8 +464,8 @@
         self.assertEqual(math.hypot(INF, NAN), INF)
         self.assertEqual(math.hypot(NAN, NINF), INF)
         self.assertEqual(math.hypot(NINF, NAN), INF)
-        self.assert_(math.isnan(math.hypot(1.0, NAN)))
-        self.assert_(math.isnan(math.hypot(NAN, -2.0)))
+        self.assertTrue(math.isnan(math.hypot(1.0, NAN)))
+        self.assertTrue(math.isnan(math.hypot(NAN, -2.0)))
 
     def testLdexp(self):
         self.assertRaises(TypeError, math.ldexp)
@@ -479,7 +479,7 @@
         self.assertEquals(math.ldexp(-1., -1000000), -0.)
         self.assertEquals(math.ldexp(INF, 30), INF)
         self.assertEquals(math.ldexp(NINF, -213), NINF)
-        self.assert_(math.isnan(math.ldexp(NAN, 0)))
+        self.assertTrue(math.isnan(math.ldexp(NAN, 0)))
 
         # large second argument
         for n in [10**5, 10**10, 10**20, 10**40]:
@@ -489,7 +489,7 @@
             self.assertEquals(math.ldexp(-1., -n), -0.)
             self.assertEquals(math.ldexp(0., -n), 0.)
             self.assertEquals(math.ldexp(-0., -n), -0.)
-            self.assert_(math.isnan(math.ldexp(NAN, -n)))
+            self.assertTrue(math.isnan(math.ldexp(NAN, -n)))
 
             self.assertRaises(OverflowError, math.ldexp, 1., n)
             self.assertRaises(OverflowError, math.ldexp, -1., n)
@@ -497,7 +497,7 @@
             self.assertEquals(math.ldexp(-0., n), -0.)
             self.assertEquals(math.ldexp(INF, n), INF)
             self.assertEquals(math.ldexp(NINF, n), NINF)
-            self.assert_(math.isnan(math.ldexp(NAN, n)))
+            self.assertTrue(math.isnan(math.ldexp(NAN, n)))
 
     def testLog(self):
         self.assertRaises(TypeError, math.log)
@@ -509,7 +509,7 @@
         self.ftest('log(10**40, 10**20)', math.log(10**40, 10**20), 2)
         self.assertEquals(math.log(INF), INF)
         self.assertRaises(ValueError, math.log, NINF)
-        self.assert_(math.isnan(math.log(NAN)))
+        self.assertTrue(math.isnan(math.log(NAN)))
 
     def testLog1p(self):
         self.assertRaises(TypeError, math.log1p)
@@ -519,7 +519,7 @@
         self.ftest('log1p(1)', math.log1p(1), math.log(2))
         self.assertEquals(math.log1p(INF), INF)
         self.assertRaises(ValueError, math.log1p, NINF)
-        self.assert_(math.isnan(math.log1p(NAN)))
+        self.assertTrue(math.isnan(math.log1p(NAN)))
         n= 2**90
         self.assertAlmostEquals(math.log1p(n), 62.383246250395075)
         self.assertAlmostEquals(math.log1p(n), math.log1p(float(n)))
@@ -531,7 +531,7 @@
         self.ftest('log10(10)', math.log10(10), 1)
         self.assertEquals(math.log(INF), INF)
         self.assertRaises(ValueError, math.log10, NINF)
-        self.assert_(math.isnan(math.log10(NAN)))
+        self.assertTrue(math.isnan(math.log10(NAN)))
 
     def testModf(self):
         self.assertRaises(TypeError, math.modf)
@@ -549,8 +549,8 @@
         self.assertEquals(math.modf(NINF), (-0.0, NINF))
 
         modf_nan = math.modf(NAN)
-        self.assert_(math.isnan(modf_nan[0]))
-        self.assert_(math.isnan(modf_nan[1]))
+        self.assertTrue(math.isnan(modf_nan[0]))
+        self.assertTrue(math.isnan(modf_nan[1]))
 
     def testPow(self):
         self.assertRaises(TypeError, math.pow)
@@ -562,9 +562,9 @@
         self.assertEqual(math.pow(NINF, 1), NINF)
         self.assertEqual((math.pow(1, INF)), 1.)
         self.assertEqual((math.pow(1, NINF)), 1.)
-        self.assert_(math.isnan(math.pow(NAN, 1)))
-        self.assert_(math.isnan(math.pow(2, NAN)))
-        self.assert_(math.isnan(math.pow(0, NAN)))
+        self.assertTrue(math.isnan(math.pow(NAN, 1)))
+        self.assertTrue(math.isnan(math.pow(2, NAN)))
+        self.assertTrue(math.isnan(math.pow(0, NAN)))
         self.assertEqual(math.pow(1, NAN), 1)
 
         # pow(0., x)
@@ -578,7 +578,7 @@
         self.assertRaises(ValueError, math.pow, 0., -2.3)
         self.assertRaises(ValueError, math.pow, 0., -3.)
         self.assertRaises(ValueError, math.pow, 0., NINF)
-        self.assert_(math.isnan(math.pow(0., NAN)))
+        self.assertTrue(math.isnan(math.pow(0., NAN)))
 
         # pow(INF, x)
         self.assertEqual(math.pow(INF, INF), INF)
@@ -591,7 +591,7 @@
         self.assertEqual(math.pow(INF, -2.3), 0.)
         self.assertEqual(math.pow(INF, -3.), 0.)
         self.assertEqual(math.pow(INF, NINF), 0.)
-        self.assert_(math.isnan(math.pow(INF, NAN)))
+        self.assertTrue(math.isnan(math.pow(INF, NAN)))
 
         # pow(-0., x)
         self.assertEqual(math.pow(-0., INF), 0.)
@@ -604,7 +604,7 @@
         self.assertRaises(ValueError, math.pow, -0., -2.3)
         self.assertRaises(ValueError, math.pow, -0., -3.)
         self.assertRaises(ValueError, math.pow, -0., NINF)
-        self.assert_(math.isnan(math.pow(-0., NAN)))
+        self.assertTrue(math.isnan(math.pow(-0., NAN)))
 
         # pow(NINF, x)
         self.assertEqual(math.pow(NINF, INF), INF)
@@ -617,7 +617,7 @@
         self.assertEqual(math.pow(NINF, -2.3), 0.)
         self.assertEqual(math.pow(NINF, -3.), -0.)
         self.assertEqual(math.pow(NINF, NINF), 0.)
-        self.assert_(math.isnan(math.pow(NINF, NAN)))
+        self.assertTrue(math.isnan(math.pow(NINF, NAN)))
 
         # pow(-1, x)
         self.assertEqual(math.pow(-1., INF), 1.)
@@ -630,7 +630,7 @@
         self.assertRaises(ValueError, math.pow, -1., -2.3)
         self.assertEqual(math.pow(-1., -3.), -1.)
         self.assertEqual(math.pow(-1., NINF), 1.)
-        self.assert_(math.isnan(math.pow(-1., NAN)))
+        self.assertTrue(math.isnan(math.pow(-1., NAN)))
 
         # pow(1, x)
         self.assertEqual(math.pow(1., INF), 1.)
@@ -713,12 +713,12 @@
         self.ftest('sin(pi/2)', math.sin(math.pi/2), 1)
         self.ftest('sin(-pi/2)', math.sin(-math.pi/2), -1)
         try:
-            self.assert_(math.isnan(math.sin(INF)))
-            self.assert_(math.isnan(math.sin(NINF)))
+            self.assertTrue(math.isnan(math.sin(INF)))
+            self.assertTrue(math.isnan(math.sin(NINF)))
         except ValueError:
             self.assertRaises(ValueError, math.sin, INF)
             self.assertRaises(ValueError, math.sin, NINF)
-        self.assert_(math.isnan(math.sin(NAN)))
+        self.assertTrue(math.isnan(math.sin(NAN)))
 
     def testSinh(self):
         self.assertRaises(TypeError, math.sinh)
@@ -727,7 +727,7 @@
         self.ftest('sinh(1)+sinh(-1)', math.sinh(1)+math.sinh(-1), 0)
         self.assertEquals(math.sinh(INF), INF)
         self.assertEquals(math.sinh(NINF), NINF)
-        self.assert_(math.isnan(math.sinh(NAN)))
+        self.assertTrue(math.isnan(math.sinh(NAN)))
 
     def testSqrt(self):
         self.assertRaises(TypeError, math.sqrt)
@@ -736,7 +736,7 @@
         self.ftest('sqrt(4)', math.sqrt(4), 2)
         self.assertEquals(math.sqrt(INF), INF)
         self.assertRaises(ValueError, math.sqrt, NINF)
-        self.assert_(math.isnan(math.sqrt(NAN)))
+        self.assertTrue(math.isnan(math.sqrt(NAN)))
 
     def testTan(self):
         self.assertRaises(TypeError, math.tan)
@@ -744,12 +744,12 @@
         self.ftest('tan(pi/4)', math.tan(math.pi/4), 1)
         self.ftest('tan(-pi/4)', math.tan(-math.pi/4), -1)
         try:
-            self.assert_(math.isnan(math.tan(INF)))
-            self.assert_(math.isnan(math.tan(NINF)))
+            self.assertTrue(math.isnan(math.tan(INF)))
+            self.assertTrue(math.isnan(math.tan(NINF)))
         except:
             self.assertRaises(ValueError, math.tan, INF)
             self.assertRaises(ValueError, math.tan, NINF)
-        self.assert_(math.isnan(math.tan(NAN)))
+        self.assertTrue(math.isnan(math.tan(NAN)))
 
     def testTanh(self):
         self.assertRaises(TypeError, math.tanh)
@@ -757,7 +757,7 @@
         self.ftest('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0)
         self.ftest('tanh(inf)', math.tanh(INF), 1)
         self.ftest('tanh(-inf)', math.tanh(NINF), -1)
-        self.assert_(math.isnan(math.tanh(NAN)))
+        self.assertTrue(math.isnan(math.tanh(NAN)))
         # check that tanh(-0.) == -0. on IEEE 754 systems
         if float.__getformat__("double").startswith("IEEE"):
             self.assertEqual(math.tanh(-0.), -0.)
@@ -804,20 +804,20 @@
         self.assertEqual(math.copysign(4., -0.), -4.0)
 
     def testIsnan(self):
-        self.assert_(math.isnan(float("nan")))
-        self.assert_(math.isnan(float("inf")* 0.))
-        self.failIf(math.isnan(float("inf")))
-        self.failIf(math.isnan(0.))
-        self.failIf(math.isnan(1.))
+        self.assertTrue(math.isnan(float("nan")))
+        self.assertTrue(math.isnan(float("inf")* 0.))
+        self.assertFalse(math.isnan(float("inf")))
+        self.assertFalse(math.isnan(0.))
+        self.assertFalse(math.isnan(1.))
 
     def testIsinf(self):
-        self.assert_(math.isinf(float("inf")))
-        self.assert_(math.isinf(float("-inf")))
-        self.assert_(math.isinf(1E400))
-        self.assert_(math.isinf(-1E400))
-        self.failIf(math.isinf(float("nan")))
-        self.failIf(math.isinf(0.))
-        self.failIf(math.isinf(1.))
+        self.assertTrue(math.isinf(float("inf")))
+        self.assertTrue(math.isinf(float("-inf")))
+        self.assertTrue(math.isinf(1E400))
+        self.assertTrue(math.isinf(-1E400))
+        self.assertFalse(math.isinf(float("nan")))
+        self.assertFalse(math.isinf(0.))
+        self.assertFalse(math.isinf(1.))
 
     # RED_FLAG 16-Oct-2000 Tim
     # While 2.0 is more consistent about exceptions than previous releases, it
diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py
index 187adad..48d5354 100644
--- a/Lib/test/test_memoryio.py
+++ b/Lib/test/test_memoryio.py
@@ -222,8 +222,8 @@
         memio = self.ioclass(buf * 10)
 
         self.assertEqual(iter(memio), memio)
-        self.failUnless(hasattr(memio, '__iter__'))
-        self.failUnless(hasattr(memio, '__next__'))
+        self.assertTrue(hasattr(memio, '__iter__'))
+        self.assertTrue(hasattr(memio, '__next__'))
         i = 0
         for line in memio:
             self.assertEqual(line, buf)
diff --git a/Lib/test/test_memoryview.py b/Lib/test/test_memoryview.py
index 31bfa62..abda678 100644
--- a/Lib/test/test_memoryview.py
+++ b/Lib/test/test_memoryview.py
@@ -28,7 +28,7 @@
         oldrefcount = sys.getrefcount(b)
         m = self._view(b)
         self.assertEquals(m[0], item(b"a"))
-        self.assert_(isinstance(m[0], bytes), type(m[0]))
+        self.assertTrue(isinstance(m[0], bytes), type(m[0]))
         self.assertEquals(m[5], item(b"f"))
         self.assertEquals(m[-1], item(b"f"))
         self.assertEquals(m[-6], item(b"a"))
@@ -119,7 +119,7 @@
             expected = b"".join(
                 self.getitem_type(bytes([c])) for c in b"abcdef")
             self.assertEquals(b, expected)
-            self.assert_(isinstance(b, bytes), type(b))
+            self.assertTrue(isinstance(b, bytes), type(b))
 
     def test_tolist(self):
         for tp in self._types:
@@ -214,7 +214,7 @@
             b = m = o = None
             # The cycle must be broken
             gc.collect()
-            self.assert_(wr() is None, wr())
+            self.assertTrue(wr() is None, wr())
 
 
 # Variations on source objects for the buffer: bytes-like objects, then arrays
@@ -291,8 +291,8 @@
     def test_constructor(self):
         for tp in self._types:
             ob = tp(self._source)
-            self.assert_(memoryview(ob))
-            self.assert_(memoryview(object=ob))
+            self.assertTrue(memoryview(ob))
+            self.assertTrue(memoryview(object=ob))
             self.assertRaises(TypeError, memoryview)
             self.assertRaises(TypeError, memoryview, ob, ob)
             self.assertRaises(TypeError, memoryview, argument=ob)
diff --git a/Lib/test/test_mimetypes.py b/Lib/test/test_mimetypes.py
index 9651a60..7918de6 100644
--- a/Lib/test/test_mimetypes.py
+++ b/Lib/test/test_mimetypes.py
@@ -47,7 +47,7 @@
 
     def test_guess_all_types(self):
         eq = self.assertEqual
-        unless = self.failUnless
+        unless = self.assertTrue
         # First try strict.  Use a set here for testing the results because if
         # test_urllib2 is run before test_mimetypes, global state is modified
         # such that the 'all' set will have more items in it.
diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
index 76b7354..0a0a663 100644
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -733,7 +733,7 @@
     def check_clone_attribute(self, deep, testName):
         doc = parseString("<doc attr='value'/>")
         attr = doc.documentElement.getAttributeNode("attr")
-        self.failIfEqual(attr, None)
+        self.assertNotEqual(attr, None)
         clone = attr.cloneNode(deep)
         self.confirm(not clone.isSameNode(attr))
         self.confirm(not attr.isSameNode(clone))
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index dec0980..eae4157 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -501,8 +501,8 @@
         f.close()
 
     def test_error(self):
-        self.assert_(issubclass(mmap.error, EnvironmentError))
-        self.assert_("mmap.error" in str(mmap.error))
+        self.assertTrue(issubclass(mmap.error, EnvironmentError))
+        self.assertTrue("mmap.error" in str(mmap.error))
 
     def test_io_methods(self):
         data = b"0123456789"
diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py
index 45556e8..225e954 100644
--- a/Lib/test/test_module.py
+++ b/Lib/test/test_module.py
@@ -10,7 +10,7 @@
         # An uninitialized module has no __dict__ or __name__,
         # and __doc__ is None
         foo = ModuleType.__new__(ModuleType)
-        self.failUnless(foo.__dict__ is None)
+        self.assertTrue(foo.__dict__ is None)
         try:
             s = foo.__name__
             self.fail("__name__ = %s" % repr(s))
@@ -52,7 +52,7 @@
         self.assertEqual(foo.bar, 42)
         self.assertEqual(foo.__dict__,
               {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
-        self.failUnless(foo.__dict__ is d)
+        self.assertTrue(foo.__dict__ is d)
 
 def test_main():
     run_unittest(ModuleTests)
diff --git a/Lib/test/test_modulefinder.py b/Lib/test/test_modulefinder.py
index bddd6c5..b4fa06a 100644
--- a/Lib/test/test_modulefinder.py
+++ b/Lib/test/test_modulefinder.py
@@ -233,12 +233,12 @@
             more = list(found - modules)
             less = list(modules - found)
             # check if we found what we expected, not more, not less
-            self.failUnlessEqual((more, less), ([], []))
+            self.assertEqual((more, less), ([], []))
 
             # check for missing and maybe missing modules
             bad, maybe = mf.any_missing_maybe()
-            self.failUnlessEqual(bad, missing)
-            self.failUnlessEqual(maybe, maybe_missing)
+            self.assertEqual(bad, missing)
+            self.assertEqual(maybe, maybe_missing)
         finally:
             distutils.dir_util.remove_tree(TEST_DIR)
 
diff --git a/Lib/test/test_multibytecodec.py b/Lib/test/test_multibytecodec.py
index 1d9d9e35..b482b39 100644
--- a/Lib/test/test_multibytecodec.py
+++ b/Lib/test/test_multibytecodec.py
@@ -242,10 +242,10 @@
         self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni)
 
     def test_iso2022_jp_g0(self):
-        self.failIf(b'\x0e' in '\N{SOFT HYPHEN}'.encode('iso-2022-jp-2'))
+        self.assertFalse(b'\x0e' in '\N{SOFT HYPHEN}'.encode('iso-2022-jp-2'))
         for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'):
             e = '\u3406'.encode(encoding)
-            self.failIf(any(x > 0x80 for x in e))
+            self.assertFalse(any(x > 0x80 for x in e))
 
     def test_bug1572832(self):
         if sys.maxunicode >= 0x10000:
diff --git a/Lib/test/test_multibytecodec_support.py b/Lib/test/test_multibytecodec_support.py
index 3e0476e..5e68856 100644
--- a/Lib/test/test_multibytecodec_support.py
+++ b/Lib/test/test_multibytecodec_support.py
@@ -53,9 +53,9 @@
             if expected:
                 result = func(source, scheme)[0]
                 if func is self.decode:
-                    self.assert_(type(result) is str, type(result))
+                    self.assertTrue(type(result) is str, type(result))
                 else:
-                    self.assert_(type(result) is bytes, type(result))
+                    self.assertTrue(type(result) is bytes, type(result))
                 self.assertEqual(result, expected)
             else:
                 self.assertRaises(UnicodeError, func, source, scheme)
diff --git a/Lib/test/test_netrc.py b/Lib/test/test_netrc.py
index 938e255..21ff88c 100644
--- a/Lib/test/test_netrc.py
+++ b/Lib/test/test_netrc.py
@@ -34,11 +34,11 @@
 
     def test_case_1(self):
         nrc = netrc.netrc(temp_filename)
-        self.assert_(nrc.macros == {'macro1':['line1\n', 'line2\n'],
+        self.assertTrue(nrc.macros == {'macro1':['line1\n', 'line2\n'],
                                            'macro2':['line3\n', 'line4\n']}
                                            )
-        self.assert_(nrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
-        self.assert_(nrc.hosts['default'] == ('log2', None, 'pass2'))
+        self.assertTrue(nrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
+        self.assertTrue(nrc.hosts['default'] == ('log2', None, 'pass2'))
 
 def test_main():
     support.run_unittest(NetrcTestCase)
diff --git a/Lib/test/test_normalization.py b/Lib/test/test_normalization.py
index 9e85e0a..f92a714 100644
--- a/Lib/test/test_normalization.py
+++ b/Lib/test/test_normalization.py
@@ -67,14 +67,14 @@
                 continue
 
             # Perform tests
-            self.failUnless(c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3), line)
-            self.failUnless(c4 ==  NFC(c4) ==  NFC(c5), line)
-            self.failUnless(c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3), line)
-            self.failUnless(c5 ==  NFD(c4) ==  NFD(c5), line)
-            self.failUnless(c4 == NFKC(c1) == NFKC(c2) == \
+            self.assertTrue(c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3), line)
+            self.assertTrue(c4 ==  NFC(c4) ==  NFC(c5), line)
+            self.assertTrue(c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3), line)
+            self.assertTrue(c5 ==  NFD(c4) ==  NFD(c5), line)
+            self.assertTrue(c4 == NFKC(c1) == NFKC(c2) == \
                             NFKC(c3) == NFKC(c4) == NFKC(c5),
                             line)
-            self.failUnless(c5 == NFKD(c1) == NFKD(c2) == \
+            self.assertTrue(c5 == NFKD(c1) == NFKD(c2) == \
                             NFKD(c3) == NFKD(c4) == NFKD(c5),
                             line)
 
@@ -87,7 +87,7 @@
             X = chr(c)
             if X in part1_data:
                 continue
-            self.failUnless(X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c)
+            self.assertTrue(X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c)
 
     def test_bug_834676(self):
         # Check for bug 834676
diff --git a/Lib/test/test_opcodes.py b/Lib/test/test_opcodes.py
index 4403a11..8b7fd9e 100644
--- a/Lib/test/test_opcodes.py
+++ b/Lib/test/test_opcodes.py
@@ -60,7 +60,7 @@
 
         try:  raise DClass(a)
         except DClass as v:
-            self.assert_(isinstance(v, DClass))
+            self.assertTrue(isinstance(v, DClass))
         else:
             self.fail("no exception")
 
diff --git a/Lib/test/test_operator.py b/Lib/test/test_operator.py
index bf38298..aa3219f 100644
--- a/Lib/test/test_operator.py
+++ b/Lib/test/test_operator.py
@@ -34,237 +34,237 @@
 
 class OperatorTestCase(unittest.TestCase):
     def test_lt(self):
-        self.failUnlessRaises(TypeError, operator.lt)
-        self.failUnlessRaises(TypeError, operator.lt, 1j, 2j)
-        self.failIf(operator.lt(1, 0))
-        self.failIf(operator.lt(1, 0.0))
-        self.failIf(operator.lt(1, 1))
-        self.failIf(operator.lt(1, 1.0))
-        self.failUnless(operator.lt(1, 2))
-        self.failUnless(operator.lt(1, 2.0))
+        self.assertRaises(TypeError, operator.lt)
+        self.assertRaises(TypeError, operator.lt, 1j, 2j)
+        self.assertFalse(operator.lt(1, 0))
+        self.assertFalse(operator.lt(1, 0.0))
+        self.assertFalse(operator.lt(1, 1))
+        self.assertFalse(operator.lt(1, 1.0))
+        self.assertTrue(operator.lt(1, 2))
+        self.assertTrue(operator.lt(1, 2.0))
 
     def test_le(self):
-        self.failUnlessRaises(TypeError, operator.le)
-        self.failUnlessRaises(TypeError, operator.le, 1j, 2j)
-        self.failIf(operator.le(1, 0))
-        self.failIf(operator.le(1, 0.0))
-        self.failUnless(operator.le(1, 1))
-        self.failUnless(operator.le(1, 1.0))
-        self.failUnless(operator.le(1, 2))
-        self.failUnless(operator.le(1, 2.0))
+        self.assertRaises(TypeError, operator.le)
+        self.assertRaises(TypeError, operator.le, 1j, 2j)
+        self.assertFalse(operator.le(1, 0))
+        self.assertFalse(operator.le(1, 0.0))
+        self.assertTrue(operator.le(1, 1))
+        self.assertTrue(operator.le(1, 1.0))
+        self.assertTrue(operator.le(1, 2))
+        self.assertTrue(operator.le(1, 2.0))
 
     def test_eq(self):
         class C(object):
             def __eq__(self, other):
                 raise SyntaxError
-        self.failUnlessRaises(TypeError, operator.eq)
-        self.failUnlessRaises(SyntaxError, operator.eq, C(), C())
-        self.failIf(operator.eq(1, 0))
-        self.failIf(operator.eq(1, 0.0))
-        self.failUnless(operator.eq(1, 1))
-        self.failUnless(operator.eq(1, 1.0))
-        self.failIf(operator.eq(1, 2))
-        self.failIf(operator.eq(1, 2.0))
+        self.assertRaises(TypeError, operator.eq)
+        self.assertRaises(SyntaxError, operator.eq, C(), C())
+        self.assertFalse(operator.eq(1, 0))
+        self.assertFalse(operator.eq(1, 0.0))
+        self.assertTrue(operator.eq(1, 1))
+        self.assertTrue(operator.eq(1, 1.0))
+        self.assertFalse(operator.eq(1, 2))
+        self.assertFalse(operator.eq(1, 2.0))
 
     def test_ne(self):
         class C(object):
             def __ne__(self, other):
                 raise SyntaxError
-        self.failUnlessRaises(TypeError, operator.ne)
-        self.failUnlessRaises(SyntaxError, operator.ne, C(), C())
-        self.failUnless(operator.ne(1, 0))
-        self.failUnless(operator.ne(1, 0.0))
-        self.failIf(operator.ne(1, 1))
-        self.failIf(operator.ne(1, 1.0))
-        self.failUnless(operator.ne(1, 2))
-        self.failUnless(operator.ne(1, 2.0))
+        self.assertRaises(TypeError, operator.ne)
+        self.assertRaises(SyntaxError, operator.ne, C(), C())
+        self.assertTrue(operator.ne(1, 0))
+        self.assertTrue(operator.ne(1, 0.0))
+        self.assertFalse(operator.ne(1, 1))
+        self.assertFalse(operator.ne(1, 1.0))
+        self.assertTrue(operator.ne(1, 2))
+        self.assertTrue(operator.ne(1, 2.0))
 
     def test_ge(self):
-        self.failUnlessRaises(TypeError, operator.ge)
-        self.failUnlessRaises(TypeError, operator.ge, 1j, 2j)
-        self.failUnless(operator.ge(1, 0))
-        self.failUnless(operator.ge(1, 0.0))
-        self.failUnless(operator.ge(1, 1))
-        self.failUnless(operator.ge(1, 1.0))
-        self.failIf(operator.ge(1, 2))
-        self.failIf(operator.ge(1, 2.0))
+        self.assertRaises(TypeError, operator.ge)
+        self.assertRaises(TypeError, operator.ge, 1j, 2j)
+        self.assertTrue(operator.ge(1, 0))
+        self.assertTrue(operator.ge(1, 0.0))
+        self.assertTrue(operator.ge(1, 1))
+        self.assertTrue(operator.ge(1, 1.0))
+        self.assertFalse(operator.ge(1, 2))
+        self.assertFalse(operator.ge(1, 2.0))
 
     def test_gt(self):
-        self.failUnlessRaises(TypeError, operator.gt)
-        self.failUnlessRaises(TypeError, operator.gt, 1j, 2j)
-        self.failUnless(operator.gt(1, 0))
-        self.failUnless(operator.gt(1, 0.0))
-        self.failIf(operator.gt(1, 1))
-        self.failIf(operator.gt(1, 1.0))
-        self.failIf(operator.gt(1, 2))
-        self.failIf(operator.gt(1, 2.0))
+        self.assertRaises(TypeError, operator.gt)
+        self.assertRaises(TypeError, operator.gt, 1j, 2j)
+        self.assertTrue(operator.gt(1, 0))
+        self.assertTrue(operator.gt(1, 0.0))
+        self.assertFalse(operator.gt(1, 1))
+        self.assertFalse(operator.gt(1, 1.0))
+        self.assertFalse(operator.gt(1, 2))
+        self.assertFalse(operator.gt(1, 2.0))
 
     def test_abs(self):
-        self.failUnlessRaises(TypeError, operator.abs)
-        self.failUnlessRaises(TypeError, operator.abs, None)
+        self.assertRaises(TypeError, operator.abs)
+        self.assertRaises(TypeError, operator.abs, None)
         self.assertEqual(operator.abs(-1), 1)
         self.assertEqual(operator.abs(1), 1)
 
     def test_add(self):
-        self.failUnlessRaises(TypeError, operator.add)
-        self.failUnlessRaises(TypeError, operator.add, None, None)
-        self.failUnless(operator.add(3, 4) == 7)
+        self.assertRaises(TypeError, operator.add)
+        self.assertRaises(TypeError, operator.add, None, None)
+        self.assertTrue(operator.add(3, 4) == 7)
 
     def test_bitwise_and(self):
-        self.failUnlessRaises(TypeError, operator.and_)
-        self.failUnlessRaises(TypeError, operator.and_, None, None)
-        self.failUnless(operator.and_(0xf, 0xa) == 0xa)
+        self.assertRaises(TypeError, operator.and_)
+        self.assertRaises(TypeError, operator.and_, None, None)
+        self.assertTrue(operator.and_(0xf, 0xa) == 0xa)
 
     def test_concat(self):
-        self.failUnlessRaises(TypeError, operator.concat)
-        self.failUnlessRaises(TypeError, operator.concat, None, None)
-        self.failUnless(operator.concat('py', 'thon') == 'python')
-        self.failUnless(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4])
-        self.failUnless(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7])
-        self.failUnless(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7])
-        self.failUnlessRaises(TypeError, operator.concat, 13, 29)
+        self.assertRaises(TypeError, operator.concat)
+        self.assertRaises(TypeError, operator.concat, None, None)
+        self.assertTrue(operator.concat('py', 'thon') == 'python')
+        self.assertTrue(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4])
+        self.assertTrue(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7])
+        self.assertTrue(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7])
+        self.assertRaises(TypeError, operator.concat, 13, 29)
 
     def test_countOf(self):
-        self.failUnlessRaises(TypeError, operator.countOf)
-        self.failUnlessRaises(TypeError, operator.countOf, None, None)
-        self.failUnless(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1)
-        self.failUnless(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0)
+        self.assertRaises(TypeError, operator.countOf)
+        self.assertRaises(TypeError, operator.countOf, None, None)
+        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1)
+        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0)
 
     def test_delitem(self):
         a = [4, 3, 2, 1]
-        self.failUnlessRaises(TypeError, operator.delitem, a)
-        self.failUnlessRaises(TypeError, operator.delitem, a, None)
-        self.failUnless(operator.delitem(a, 1) is None)
-        self.assert_(a == [4, 2, 1])
+        self.assertRaises(TypeError, operator.delitem, a)
+        self.assertRaises(TypeError, operator.delitem, a, None)
+        self.assertTrue(operator.delitem(a, 1) is None)
+        self.assertTrue(a == [4, 2, 1])
 
     def test_floordiv(self):
-        self.failUnlessRaises(TypeError, operator.floordiv, 5)
-        self.failUnlessRaises(TypeError, operator.floordiv, None, None)
-        self.failUnless(operator.floordiv(5, 2) == 2)
+        self.assertRaises(TypeError, operator.floordiv, 5)
+        self.assertRaises(TypeError, operator.floordiv, None, None)
+        self.assertTrue(operator.floordiv(5, 2) == 2)
 
     def test_truediv(self):
-        self.failUnlessRaises(TypeError, operator.truediv, 5)
-        self.failUnlessRaises(TypeError, operator.truediv, None, None)
-        self.failUnless(operator.truediv(5, 2) == 2.5)
+        self.assertRaises(TypeError, operator.truediv, 5)
+        self.assertRaises(TypeError, operator.truediv, None, None)
+        self.assertTrue(operator.truediv(5, 2) == 2.5)
 
     def test_getitem(self):
         a = range(10)
-        self.failUnlessRaises(TypeError, operator.getitem)
-        self.failUnlessRaises(TypeError, operator.getitem, a, None)
-        self.failUnless(operator.getitem(a, 2) == 2)
+        self.assertRaises(TypeError, operator.getitem)
+        self.assertRaises(TypeError, operator.getitem, a, None)
+        self.assertTrue(operator.getitem(a, 2) == 2)
 
     def test_indexOf(self):
-        self.failUnlessRaises(TypeError, operator.indexOf)
-        self.failUnlessRaises(TypeError, operator.indexOf, None, None)
-        self.failUnless(operator.indexOf([4, 3, 2, 1], 3) == 1)
+        self.assertRaises(TypeError, operator.indexOf)
+        self.assertRaises(TypeError, operator.indexOf, None, None)
+        self.assertTrue(operator.indexOf([4, 3, 2, 1], 3) == 1)
         self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0)
 
     def test_invert(self):
-        self.failUnlessRaises(TypeError, operator.invert)
-        self.failUnlessRaises(TypeError, operator.invert, None)
+        self.assertRaises(TypeError, operator.invert)
+        self.assertRaises(TypeError, operator.invert, None)
         self.assertEqual(operator.inv(4), -5)
 
     def test_lshift(self):
-        self.failUnlessRaises(TypeError, operator.lshift)
-        self.failUnlessRaises(TypeError, operator.lshift, None, 42)
-        self.failUnless(operator.lshift(5, 1) == 10)
-        self.failUnless(operator.lshift(5, 0) == 5)
+        self.assertRaises(TypeError, operator.lshift)
+        self.assertRaises(TypeError, operator.lshift, None, 42)
+        self.assertTrue(operator.lshift(5, 1) == 10)
+        self.assertTrue(operator.lshift(5, 0) == 5)
         self.assertRaises(ValueError, operator.lshift, 2, -1)
 
     def test_mod(self):
-        self.failUnlessRaises(TypeError, operator.mod)
-        self.failUnlessRaises(TypeError, operator.mod, None, 42)
-        self.failUnless(operator.mod(5, 2) == 1)
+        self.assertRaises(TypeError, operator.mod)
+        self.assertRaises(TypeError, operator.mod, None, 42)
+        self.assertTrue(operator.mod(5, 2) == 1)
 
     def test_mul(self):
-        self.failUnlessRaises(TypeError, operator.mul)
-        self.failUnlessRaises(TypeError, operator.mul, None, None)
-        self.failUnless(operator.mul(5, 2) == 10)
+        self.assertRaises(TypeError, operator.mul)
+        self.assertRaises(TypeError, operator.mul, None, None)
+        self.assertTrue(operator.mul(5, 2) == 10)
 
     def test_neg(self):
-        self.failUnlessRaises(TypeError, operator.neg)
-        self.failUnlessRaises(TypeError, operator.neg, None)
+        self.assertRaises(TypeError, operator.neg)
+        self.assertRaises(TypeError, operator.neg, None)
         self.assertEqual(operator.neg(5), -5)
         self.assertEqual(operator.neg(-5), 5)
         self.assertEqual(operator.neg(0), 0)
         self.assertEqual(operator.neg(-0), 0)
 
     def test_bitwise_or(self):
-        self.failUnlessRaises(TypeError, operator.or_)
-        self.failUnlessRaises(TypeError, operator.or_, None, None)
-        self.failUnless(operator.or_(0xa, 0x5) == 0xf)
+        self.assertRaises(TypeError, operator.or_)
+        self.assertRaises(TypeError, operator.or_, None, None)
+        self.assertTrue(operator.or_(0xa, 0x5) == 0xf)
 
     def test_pos(self):
-        self.failUnlessRaises(TypeError, operator.pos)
-        self.failUnlessRaises(TypeError, operator.pos, None)
+        self.assertRaises(TypeError, operator.pos)
+        self.assertRaises(TypeError, operator.pos, None)
         self.assertEqual(operator.pos(5), 5)
         self.assertEqual(operator.pos(-5), -5)
         self.assertEqual(operator.pos(0), 0)
         self.assertEqual(operator.pos(-0), 0)
 
     def test_pow(self):
-        self.failUnlessRaises(TypeError, operator.pow)
-        self.failUnlessRaises(TypeError, operator.pow, None, None)
+        self.assertRaises(TypeError, operator.pow)
+        self.assertRaises(TypeError, operator.pow, None, None)
         self.assertEqual(operator.pow(3,5), 3**5)
         self.assertEqual(operator.__pow__(3,5), 3**5)
         self.assertRaises(TypeError, operator.pow, 1)
         self.assertRaises(TypeError, operator.pow, 1, 2, 3)
 
     def test_rshift(self):
-        self.failUnlessRaises(TypeError, operator.rshift)
-        self.failUnlessRaises(TypeError, operator.rshift, None, 42)
-        self.failUnless(operator.rshift(5, 1) == 2)
-        self.failUnless(operator.rshift(5, 0) == 5)
+        self.assertRaises(TypeError, operator.rshift)
+        self.assertRaises(TypeError, operator.rshift, None, 42)
+        self.assertTrue(operator.rshift(5, 1) == 2)
+        self.assertTrue(operator.rshift(5, 0) == 5)
         self.assertRaises(ValueError, operator.rshift, 2, -1)
 
     def test_contains(self):
-        self.failUnlessRaises(TypeError, operator.contains)
-        self.failUnlessRaises(TypeError, operator.contains, None, None)
-        self.failUnless(operator.contains(range(4), 2))
-        self.failIf(operator.contains(range(4), 5))
+        self.assertRaises(TypeError, operator.contains)
+        self.assertRaises(TypeError, operator.contains, None, None)
+        self.assertTrue(operator.contains(range(4), 2))
+        self.assertFalse(operator.contains(range(4), 5))
 
     def test_setitem(self):
         a = list(range(3))
-        self.failUnlessRaises(TypeError, operator.setitem, a)
-        self.failUnlessRaises(TypeError, operator.setitem, a, None, None)
-        self.failUnless(operator.setitem(a, 0, 2) is None)
-        self.assert_(a == [2, 1, 2])
+        self.assertRaises(TypeError, operator.setitem, a)
+        self.assertRaises(TypeError, operator.setitem, a, None, None)
+        self.assertTrue(operator.setitem(a, 0, 2) is None)
+        self.assertTrue(a == [2, 1, 2])
         self.assertRaises(IndexError, operator.setitem, a, 4, 2)
 
     def test_sub(self):
-        self.failUnlessRaises(TypeError, operator.sub)
-        self.failUnlessRaises(TypeError, operator.sub, None, None)
-        self.failUnless(operator.sub(5, 2) == 3)
+        self.assertRaises(TypeError, operator.sub)
+        self.assertRaises(TypeError, operator.sub, None, None)
+        self.assertTrue(operator.sub(5, 2) == 3)
 
     def test_truth(self):
         class C(object):
             def __bool__(self):
                 raise SyntaxError
-        self.failUnlessRaises(TypeError, operator.truth)
-        self.failUnlessRaises(SyntaxError, operator.truth, C())
-        self.failUnless(operator.truth(5))
-        self.failUnless(operator.truth([0]))
-        self.failIf(operator.truth(0))
-        self.failIf(operator.truth([]))
+        self.assertRaises(TypeError, operator.truth)
+        self.assertRaises(SyntaxError, operator.truth, C())
+        self.assertTrue(operator.truth(5))
+        self.assertTrue(operator.truth([0]))
+        self.assertFalse(operator.truth(0))
+        self.assertFalse(operator.truth([]))
 
     def test_bitwise_xor(self):
-        self.failUnlessRaises(TypeError, operator.xor)
-        self.failUnlessRaises(TypeError, operator.xor, None, None)
-        self.failUnless(operator.xor(0xb, 0xc) == 0x7)
+        self.assertRaises(TypeError, operator.xor)
+        self.assertRaises(TypeError, operator.xor, None, None)
+        self.assertTrue(operator.xor(0xb, 0xc) == 0x7)
 
     def test_is(self):
         a = b = 'xyzpdq'
         c = a[:3] + b[3:]
-        self.failUnlessRaises(TypeError, operator.is_)
-        self.failUnless(operator.is_(a, b))
-        self.failIf(operator.is_(a,c))
+        self.assertRaises(TypeError, operator.is_)
+        self.assertTrue(operator.is_(a, b))
+        self.assertFalse(operator.is_(a,c))
 
     def test_is_not(self):
         a = b = 'xyzpdq'
         c = a[:3] + b[3:]
-        self.failUnlessRaises(TypeError, operator.is_not)
-        self.failIf(operator.is_not(a, b))
-        self.failUnless(operator.is_not(a,c))
+        self.assertRaises(TypeError, operator.is_not)
+        self.assertFalse(operator.is_not(a, b))
+        self.assertTrue(operator.is_not(a,c))
 
     def test_attrgetter(self):
         class A:
@@ -290,7 +290,7 @@
         class C(object):
             def __getattr__(self, name):
                 raise SyntaxError
-        self.failUnlessRaises(SyntaxError, operator.attrgetter('foo'), C())
+        self.assertRaises(SyntaxError, operator.attrgetter('foo'), C())
 
         # recursive gets
         a = A()
@@ -322,7 +322,7 @@
         class C(object):
             def __getitem__(self, name):
                 raise SyntaxError
-        self.failUnlessRaises(SyntaxError, operator.itemgetter(42), C())
+        self.assertRaises(SyntaxError, operator.itemgetter(42), C())
 
         f = operator.itemgetter('name')
         self.assertRaises(TypeError, f, a)
diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py
index 9c52f86..cdbbc9d 100644
--- a/Lib/test/test_optparse.py
+++ b/Lib/test/test_optparse.py
@@ -109,7 +109,7 @@
         except expected_exception as err:
             actual_message = str(err)
             if isinstance(expected_message, retype):
-                self.assert_(expected_message.search(actual_message),
+                self.assertTrue(expected_message.search(actual_message),
                              """\
 expected exception message pattern:
 /%s/
@@ -165,7 +165,7 @@
                 sys.stdout = save_stdout
 
         except InterceptedError as err:
-            self.assert_(
+            self.assertTrue(
                 isinstance(output, str),
                 "expected output to be an ordinary string, not %r"
                 % type(output))
@@ -338,7 +338,7 @@
 
     def test_get_option(self):
         opt1 = self.parser.get_option("-v")
-        self.assert_(isinstance(opt1, Option))
+        self.assertTrue(isinstance(opt1, Option))
         self.assertEqual(opt1._short_opts, ["-v", "-n"])
         self.assertEqual(opt1._long_opts, ["--verbose", "--noisy"])
         self.assertEqual(opt1.action, "store_true")
@@ -349,33 +349,33 @@
         opt2 = self.parser.get_option("--verbose")
         opt3 = self.parser.get_option("-n")
         opt4 = self.parser.get_option("--noisy")
-        self.assert_(opt1 is opt2 is opt3 is opt4)
+        self.assertTrue(opt1 is opt2 is opt3 is opt4)
 
     def test_has_option(self):
-        self.assert_(self.parser.has_option("-v"))
-        self.assert_(self.parser.has_option("--verbose"))
+        self.assertTrue(self.parser.has_option("-v"))
+        self.assertTrue(self.parser.has_option("--verbose"))
 
-    def assert_removed(self):
-        self.assert_(self.parser.get_option("-v") is None)
-        self.assert_(self.parser.get_option("--verbose") is None)
-        self.assert_(self.parser.get_option("-n") is None)
-        self.assert_(self.parser.get_option("--noisy") is None)
+    def assertTrueremoved(self):
+        self.assertTrue(self.parser.get_option("-v") is None)
+        self.assertTrue(self.parser.get_option("--verbose") is None)
+        self.assertTrue(self.parser.get_option("-n") is None)
+        self.assertTrue(self.parser.get_option("--noisy") is None)
 
-        self.failIf(self.parser.has_option("-v"))
-        self.failIf(self.parser.has_option("--verbose"))
-        self.failIf(self.parser.has_option("-n"))
-        self.failIf(self.parser.has_option("--noisy"))
+        self.assertFalse(self.parser.has_option("-v"))
+        self.assertFalse(self.parser.has_option("--verbose"))
+        self.assertFalse(self.parser.has_option("-n"))
+        self.assertFalse(self.parser.has_option("--noisy"))
 
-        self.assert_(self.parser.has_option("-q"))
-        self.assert_(self.parser.has_option("--silent"))
+        self.assertTrue(self.parser.has_option("-q"))
+        self.assertTrue(self.parser.has_option("--silent"))
 
     def test_remove_short_opt(self):
         self.parser.remove_option("-n")
-        self.assert_removed()
+        self.assertTrueremoved()
 
     def test_remove_long_opt(self):
         self.parser.remove_option("--verbose")
-        self.assert_removed()
+        self.assertTrueremoved()
 
     def test_remove_nonexistent(self):
         self.assertRaises(self.parser.remove_option, ('foo',), None,
@@ -779,14 +779,14 @@
                                              {'verbose': 0},
                                              [])
         if hasattr(__builtins__, 'False'):
-            self.failUnless(options.verbose is False)
+            self.assertTrue(options.verbose is False)
 
     def test_bool_true(self):
         (options, args) = self.assertParseOK(["-v"],
                                              {'verbose': 1},
                                              [])
         if hasattr(__builtins__, 'True'):
-            self.failUnless(options.verbose is True)
+            self.assertTrue(options.verbose is True)
 
     def test_bool_flicker_on_and_off(self):
         self.assertParseOK(["-qvq", "-q", "-v"],
@@ -992,7 +992,7 @@
                                              description="Some more options")
         group.set_title("Bacon")
         group.add_option("--bacon", type="int")
-        self.assert_(self.parser.get_option_group("--bacon"), group)
+        self.assertTrue(self.parser.get_option_group("--bacon"), group)
 
 # -- Test extending and parser.parse_args() ----------------------------
 
@@ -1088,15 +1088,15 @@
         if opt == "-x":
             self.assertEqual(option._short_opts, ["-x"])
             self.assertEqual(option._long_opts, [])
-            self.assert_(parser_ is self.parser)
-            self.assert_(value is None)
+            self.assertTrue(parser_ is self.parser)
+            self.assertTrue(value is None)
             self.assertEqual(vars(parser_.values), {'filename': None})
 
             parser_.values.x = 42
         elif opt == "--file":
             self.assertEqual(option._short_opts, ["-f"])
             self.assertEqual(option._long_opts, ["--file"])
-            self.assert_(parser_ is self.parser)
+            self.assertTrue(parser_ is self.parser)
             self.assertEqual(value, "foo")
             self.assertEqual(vars(parser_.values), {'filename': None, 'x': 42})
 
@@ -1134,7 +1134,7 @@
 
     def process_tuple(self, option, opt, value, parser_, len, type):
         self.assertEqual(len, 3)
-        self.assert_(type is int)
+        self.assertTrue(type is int)
 
         if opt == "-p":
             self.assertEqual(value, "1,2,3")
@@ -1225,7 +1225,7 @@
                                                option_list=options)
 
     def variable_args(self, option, opt, value, parser):
-        self.assert_(value is None)
+        self.assertTrue(value is None)
         done = 0
         value = []
         rargs = parser.rargs
@@ -1281,7 +1281,7 @@
 
 class TestConflict(ConflictBase):
     """Use the default conflict resolution for Optik 1.2: error."""
-    def assert_conflict_error(self, func):
+    def assertTrueconflict_error(self, func):
         err = self.assertRaises(
             func, ("-v", "--version"), {'action' : "callback",
                                         'callback' : self.show_version,
@@ -1293,11 +1293,11 @@
         self.assertEqual(err.option_id, "-v/--version")
 
     def test_conflict_error(self):
-        self.assert_conflict_error(self.parser.add_option)
+        self.assertTrueconflict_error(self.parser.add_option)
 
     def test_conflict_error_group(self):
         group = OptionGroup(self.parser, "Group 1")
-        self.assert_conflict_error(group.add_option)
+        self.assertTrueconflict_error(group.add_option)
 
     def test_no_such_conflict_handler(self):
         self.assertRaises(
@@ -1317,8 +1317,8 @@
         verbose_opt = self.parser.get_option("--verbose")
         version_opt = self.parser.get_option("--version")
 
-        self.assert_(v_opt is version_opt)
-        self.assert_(v_opt is not verbose_opt)
+        self.assertTrue(v_opt is version_opt)
+        self.assertTrue(v_opt is not verbose_opt)
         self.assertEqual(v_opt._long_opts, ["--version"])
         self.assertEqual(version_opt._short_opts, ["-v"])
         self.assertEqual(version_opt._long_opts, ["--version"])
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 9e60f00..62edd6c 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -20,7 +20,7 @@
     def test_access(self):
         f = os.open(support.TESTFN, os.O_CREAT|os.O_RDWR)
         os.close(f)
-        self.assert_(os.access(support.TESTFN, os.W_OK))
+        self.assertTrue(os.access(support.TESTFN, os.W_OK))
 
     def test_closerange(self):
         first = os.open(support.TESTFN, os.O_CREAT|os.O_RDWR)
@@ -85,7 +85,7 @@
 
     def check_tempfile(self, name):
         # make sure it doesn't already exist:
-        self.failIf(os.path.exists(name),
+        self.assertFalse(os.path.exists(name),
                     "file already exists for temporary file")
         # make sure we can create the file
         open(name, "w")
@@ -102,7 +102,7 @@
         self.check_tempfile(name)
 
         name = os.tempnam(support.TESTFN, "pfx")
-        self.assert_(os.path.basename(name)[:3] == "pfx")
+        self.assertTrue(os.path.basename(name)[:3] == "pfx")
         self.check_tempfile(name)
 
     def test_tmpfile(self):
@@ -151,7 +151,7 @@
         fp.seek(0,0)
         s = fp.read()
         fp.close()
-        self.assert_(s == "foobar")
+        self.assertTrue(s == "foobar")
 
     def test_tmpnam(self):
         import sys
@@ -176,7 +176,7 @@
             # the root of the current drive.  That's a terrible place to
             # put temp files, and, depending on privileges, the user
             # may not even be able to open a file in the root directory.
-            self.failIf(os.path.exists(name),
+            self.assertFalse(os.path.exists(name),
                         "file already exists for temporary file")
         else:
             self.check_tempfile(name)
@@ -228,7 +228,7 @@
                     def trunc(x): return x
                 self.assertEquals(trunc(getattr(result, attr)),
                                   result[getattr(stat, name)])
-                self.assert_(attr in members)
+                self.assertTrue(attr in members)
 
         try:
             result[200]
@@ -520,7 +520,7 @@
         os.makedirs(path)
 
         # Try paths with a '.' in them
-        self.failUnlessRaises(OSError, os.makedirs, os.curdir)
+        self.assertRaises(OSError, os.makedirs, os.curdir)
         path = os.path.join(base, 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', os.curdir)
         os.makedirs(path)
         path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4',
diff --git a/Lib/test/test_ossaudiodev.py b/Lib/test/test_ossaudiodev.py
index 603aea3..dda6137 100644
--- a/Lib/test/test_ossaudiodev.py
+++ b/Lib/test/test_ossaudiodev.py
@@ -58,7 +58,7 @@
         dsp.fileno()
 
         # Make sure the read-only attributes work.
-        self.failIf(dsp.closed)
+        self.assertFalse(dsp.closed)
         self.assertEqual(dsp.name, "/dev/dsp")
         self.assertEqual(dsp.mode, "w", "bad dsp.mode: %r" % dsp.mode)
 
@@ -84,7 +84,7 @@
         elapsed_time = t2 - t1
 
         percent_diff = (abs(elapsed_time - expected_time) / expected_time) * 100
-        self.failUnless(percent_diff <= 10.0,
+        self.assertTrue(percent_diff <= 10.0,
                         "elapsed time (%s) > 10%% off of expected time (%s)" %
                         (elapsed_time, expected_time))
 
@@ -133,7 +133,7 @@
                       ]:
             (fmt, channels, rate) = config
             result = dsp.setparameters(fmt, channels, rate, False)
-            self.failIfEqual(result, config,
+            self.assertNotEqual(result, config,
                              "unexpectedly got requested configuration")
 
             try:
@@ -157,7 +157,7 @@
             #self.set_bad_parameters(dsp)
         finally:
             dsp.close()
-            self.failUnless(dsp.closed)
+            self.assertTrue(dsp.closed)
 
 
 def test_main():
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
index 65d1d35..c7cc13f 100644
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -545,15 +545,15 @@
         bottom = min(st1, st2, st3)
         top = max(st1, st2, st3)
         mid = sorted([st1, st2, st3])[1]
-        self.assert_(bottom < mid)
-        self.assert_(bottom < top)
-        self.assert_(mid < top)
-        self.assert_(bottom <= mid)
-        self.assert_(bottom <= top)
-        self.assert_(mid <= top)
-        self.assert_(bottom <= bottom)
-        self.assert_(mid <= mid)
-        self.assert_(top <= top)
+        self.assertTrue(bottom < mid)
+        self.assertTrue(bottom < top)
+        self.assertTrue(mid < top)
+        self.assertTrue(bottom <= mid)
+        self.assertTrue(bottom <= top)
+        self.assertTrue(mid <= top)
+        self.assertTrue(bottom <= bottom)
+        self.assertTrue(mid <= mid)
+        self.assertTrue(top <= top)
         # interaction with other types
         self.assertEquals(st1 == 1588.602459, False)
         self.assertEquals('spanish armada' != st2, True)
diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py
index 1543f3b..5696500 100644
--- a/Lib/test/test_peepholer.py
+++ b/Lib/test/test_peepholer.py
@@ -25,9 +25,9 @@
                 del x
         asm = disassemble(unot)
         for elem in ('UNARY_NOT', 'POP_JUMP_IF_FALSE'):
-            self.assert_(elem not in asm)
+            self.assertTrue(elem not in asm)
         for elem in ('POP_JUMP_IF_TRUE',):
-            self.assert_(elem in asm)
+            self.assertTrue(elem in asm)
 
     def test_elim_inversion_of_is_or_in(self):
         for line, elem in (
@@ -37,7 +37,7 @@
             ('not a not in b', '(in)',),
             ):
             asm = dis_single(line)
-            self.assert_(elem in asm)
+            self.assertTrue(elem in asm)
 
     def test_global_as_constant(self):
         # LOAD_GLOBAL None/True/False  -->  LOAD_CONST None/True/False
@@ -54,14 +54,14 @@
         for func, name in ((f, 'None'), (g, 'True'), (h, 'False')):
             asm = disassemble(func)
             for elem in ('LOAD_GLOBAL',):
-                self.assert_(elem not in asm)
+                self.assertTrue(elem not in asm)
             for elem in ('LOAD_CONST', '('+name+')'):
-                self.assert_(elem in asm)
+                self.assertTrue(elem in asm)
         def f():
             'Adding a docstring made this test fail in Py2.5.0'
             return None
-        self.assert_('LOAD_CONST' in disassemble(f))
-        self.assert_('LOAD_GLOBAL' not in disassemble(f))
+        self.assertTrue('LOAD_CONST' in disassemble(f))
+        self.assertTrue('LOAD_GLOBAL' not in disassemble(f))
 
     def test_while_one(self):
         # Skip over:  LOAD_CONST trueconst  POP_JUMP_IF_FALSE xx
@@ -71,9 +71,9 @@
             return list
         asm = disassemble(f)
         for elem in ('LOAD_CONST', 'POP_JUMP_IF_FALSE'):
-            self.assert_(elem not in asm)
+            self.assertTrue(elem not in asm)
         for elem in ('JUMP_ABSOLUTE',):
-            self.assert_(elem in asm)
+            self.assertTrue(elem in asm)
 
     def test_pack_unpack(self):
         for line, elem in (
@@ -82,9 +82,9 @@
             ('a, b, c = a, b, c', 'ROT_THREE',),
             ):
             asm = dis_single(line)
-            self.assert_(elem in asm)
-            self.assert_('BUILD_TUPLE' not in asm)
-            self.assert_('UNPACK_TUPLE' not in asm)
+            self.assertTrue(elem in asm)
+            self.assertTrue('BUILD_TUPLE' not in asm)
+            self.assertTrue('UNPACK_TUPLE' not in asm)
 
     def test_folding_of_tuples_of_constants(self):
         for line, elem in (
@@ -95,8 +95,8 @@
             ('((1, 2), 3, 4)', '(((1, 2), 3, 4))'),
             ):
             asm = dis_single(line)
-            self.assert_(elem in asm)
-            self.assert_('BUILD_TUPLE' not in asm)
+            self.assertTrue(elem in asm)
+            self.assertTrue('BUILD_TUPLE' not in asm)
 
         # Bug 1053819:  Tuple of constants misidentified when presented with:
         # . . . opcode_with_arg 100   unary_opcode   BUILD_TUPLE 1  . . .
@@ -134,17 +134,17 @@
             ('a = 13 | 7', '(15)'),                 # binary or
             ):
             asm = dis_single(line)
-            self.assert_(elem in asm, asm)
-            self.assert_('BINARY_' not in asm)
+            self.assertTrue(elem in asm, asm)
+            self.assertTrue('BINARY_' not in asm)
 
         # Verify that unfoldables are skipped
         asm = dis_single('a=2+"b"')
-        self.assert_('(2)' in asm)
-        self.assert_("('b')" in asm)
+        self.assertTrue('(2)' in asm)
+        self.assertTrue("('b')" in asm)
 
         # Verify that large sequences do not result from folding
         asm = dis_single('a="x"*1000')
-        self.assert_('(1000)' in asm)
+        self.assertTrue('(1000)' in asm)
 
     def test_folding_of_unaryops_on_constants(self):
         for line, elem in (
@@ -152,8 +152,8 @@
             ('~-2', '(1)'),                         # unary invert
         ):
             asm = dis_single(line)
-            self.assert_(elem in asm, asm)
-            self.assert_('UNARY_' not in asm)
+            self.assertTrue(elem in asm, asm)
+            self.assertTrue('UNARY_' not in asm)
 
         # Verify that unfoldables are skipped
         for line, elem in (
@@ -161,16 +161,16 @@
             ('~"abc"', "('abc')"),                  # unary invert
         ):
             asm = dis_single(line)
-            self.assert_(elem in asm, asm)
-            self.assert_('UNARY_' in asm)
+            self.assertTrue(elem in asm, asm)
+            self.assertTrue('UNARY_' in asm)
 
     def test_elim_extra_return(self):
         # RETURN LOAD_CONST None RETURN  -->  RETURN
         def f(x):
             return x
         asm = disassemble(f)
-        self.assert_('LOAD_CONST' not in asm)
-        self.assert_('(None)' not in asm)
+        self.assertTrue('LOAD_CONST' not in asm)
+        self.assertTrue('(None)' not in asm)
         self.assertEqual(asm.split().count('RETURN_VALUE'), 1)
 
     def test_elim_jump_to_return(self):
@@ -178,8 +178,8 @@
         def f(cond, true_value, false_value):
             return true_value if cond else false_value
         asm = disassemble(f)
-        self.assert_('JUMP_FORWARD' not in asm)
-        self.assert_('JUMP_ABSOLUTE' not in asm)
+        self.assertTrue('JUMP_FORWARD' not in asm)
+        self.assertTrue('JUMP_ABSOLUTE' not in asm)
         self.assertEqual(asm.split().count('RETURN_VALUE'), 2)
 
     def test_elim_jump_after_return1(self):
@@ -194,8 +194,8 @@
                 return 5
             return 6
         asm = disassemble(f)
-        self.assert_('JUMP_FORWARD' not in asm)
-        self.assert_('JUMP_ABSOLUTE' not in asm)
+        self.assertTrue('JUMP_FORWARD' not in asm)
+        self.assertTrue('JUMP_ABSOLUTE' not in asm)
         self.assertEqual(asm.split().count('RETURN_VALUE'), 6)
 
     def test_elim_jump_after_return2(self):
@@ -204,7 +204,7 @@
             while 1:
                 if cond1: return 4
         asm = disassemble(f)
-        self.assert_('JUMP_FORWARD' not in asm)
+        self.assertTrue('JUMP_FORWARD' not in asm)
         # There should be one jump for the while loop.
         self.assertEqual(asm.split().count('JUMP_ABSOLUTE'), 1)
         self.assertEqual(asm.split().count('RETURN_VALUE'), 2)
@@ -215,7 +215,7 @@
                 pass
             return g
         asm = disassemble(f)
-        self.assert_('BINARY_ADD' not in asm)
+        self.assertTrue('BINARY_ADD' not in asm)
 
 
 def test_main(verbose=None):
diff --git a/Lib/test/test_pep247.py b/Lib/test/test_pep247.py
index 733109a..da8f816 100644
--- a/Lib/test/test_pep247.py
+++ b/Lib/test/test_pep247.py
@@ -11,8 +11,8 @@
 class Pep247Test(unittest.TestCase):
 
     def check_module(self, module, key=None):
-        self.assert_(hasattr(module, 'digest_size'))
-        self.assert_(module.digest_size is None or module.digest_size > 0)
+        self.assertTrue(hasattr(module, 'digest_size'))
+        self.assertTrue(module.digest_size is None or module.digest_size > 0)
         self.check_object(module.new, module.digest_size, key)
 
     def check_object(self, cls, digest_size, key):
@@ -31,7 +31,7 @@
             obj3.update(b'string')
             h2 = obj3.digest()
         self.assertEquals(h1, h2)
-        self.assert_(hasattr(obj1, 'digest_size'))
+        self.assertTrue(hasattr(obj1, 'digest_size'))
 
         if digest_size is not None:
             self.assertEquals(obj1.digest_size, digest_size)
diff --git a/Lib/test/test_pep277.py b/Lib/test/test_pep277.py
index e18f602..11039ac 100644
--- a/Lib/test/test_pep277.py
+++ b/Lib/test/test_pep277.py
@@ -82,8 +82,8 @@
                                 sys.getfilesystemencoding()))
         sf2 = set("\\".join((str(support.TESTFN), f))
                   for f in f2)
-        self.failUnlessEqual(len(f1), len(self.files))
-        self.failUnlessEqual(sf2, set(self.files))
+        self.assertEqual(len(f1), len(self.files))
+        self.assertEqual(sf2, set(self.files))
 
     def test_rename(self):
         for name in self.files:
diff --git a/Lib/test/test_pep3120.py b/Lib/test/test_pep3120.py
index 81d15bc..85da048 100644
--- a/Lib/test/test_pep3120.py
+++ b/Lib/test/test_pep3120.py
@@ -19,7 +19,7 @@
         try:
             import test.badsyntax_pep3120
         except SyntaxError as msg:
-            self.assert_(str(msg).find("Non-UTF-8 code starting with") >= 0)
+            self.assertTrue(str(msg).find("Non-UTF-8 code starting with") >= 0)
         else:
             self.fail("expected exception didn't occur")
 
diff --git a/Lib/test/test_pep352.py b/Lib/test/test_pep352.py
index 1481244..b9645d5 100644
--- a/Lib/test/test_pep352.py
+++ b/Lib/test/test_pep352.py
@@ -12,7 +12,7 @@
     inheritance hierarchy)"""
 
     def test_builtins_new_style(self):
-        self.failUnless(issubclass(Exception, object))
+        self.assertTrue(issubclass(Exception, object))
 
     def verify_instance_interface(self, ins):
         for attr in ("args", "__str__", "__repr__"):
@@ -38,7 +38,7 @@
                 last_exc = getattr(builtins, superclass_name)
             except AttributeError:
                 self.fail("base class %s not a built-in" % superclass_name)
-            self.failUnless(superclass_name in exc_set,
+            self.assertTrue(superclass_name in exc_set,
                             '%s not found' % superclass_name)
             exc_set.discard(superclass_name)
             superclasses = []  # Loop will insert base exception
@@ -66,20 +66,20 @@
                 elif last_depth > depth:
                     while superclasses[-1][0] >= depth:
                         superclasses.pop()
-                self.failUnless(issubclass(exc, superclasses[-1][1]),
+                self.assertTrue(issubclass(exc, superclasses[-1][1]),
                 "%s is not a subclass of %s" % (exc.__name__,
                     superclasses[-1][1].__name__))
                 try:  # Some exceptions require arguments; just skip them
                     self.verify_instance_interface(exc())
                 except TypeError:
                     pass
-                self.failUnless(exc_name in exc_set)
+                self.assertTrue(exc_name in exc_set)
                 exc_set.discard(exc_name)
                 last_exc = exc
                 last_depth = depth
         finally:
             inheritance_tree.close()
-        self.failUnlessEqual(len(exc_set), 0, "%s not accounted for" % exc_set)
+        self.assertEqual(len(exc_set), 0, "%s not accounted for" % exc_set)
 
     interface_tests = ("length", "args", "str", "repr")
 
diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py
index 1064617..0c568bb 100644
--- a/Lib/test/test_pkg.py
+++ b/Lib/test/test_pkg.py
@@ -130,7 +130,7 @@
         self.assertEqual(subsub.__name__, "t2.sub.subsub")
         self.assertEqual(sub.subsub.__name__, "t2.sub.subsub")
         for name in ['spam', 'sub', 'subsub', 't2']:
-            self.failUnless(locals()["name"], "Failed to import %s" % name)
+            self.assertTrue(locals()["name"], "Failed to import %s" % name)
 
         import t2.sub
         import t2.sub.subsub
@@ -140,7 +140,7 @@
 
         s = """
             from t2 import *
-            self.failUnless(dir(), ['self', 'sub'])
+            self.assertTrue(dir(), ['self', 'sub'])
             """
         self.run_code(s)
 
@@ -258,25 +258,25 @@
         self.assertEqual(fixdir(dir(tas)),
                          ['__doc__', '__file__', '__name__',
                           '__package__', '__path__'])
-        self.failIf(t7)
+        self.assertFalse(t7)
         from t7 import sub as subpar
         self.assertEqual(fixdir(dir(subpar)),
                          ['__doc__', '__file__', '__name__',
                           '__package__', '__path__'])
-        self.failIf(t7)
-        self.failIf(sub)
+        self.assertFalse(t7)
+        self.assertFalse(sub)
         from t7.sub import subsub as subsubsub
         self.assertEqual(fixdir(dir(subsubsub)),
                          ['__doc__', '__file__', '__name__',
                          '__package__', '__path__', 'spam'])
-        self.failIf(t7)
-        self.failIf(sub)
-        self.failIf(subsub)
+        self.assertFalse(t7)
+        self.assertFalse(sub)
+        self.assertFalse(subsub)
         from t7.sub.subsub import spam as ham
         self.assertEqual(ham, 1)
-        self.failIf(t7)
-        self.failIf(sub)
-        self.failIf(subsub)
+        self.assertFalse(t7)
+        self.assertFalse(sub)
+        self.assertFalse(subsub)
 
 
 def test_main():
diff --git a/Lib/test/test_pkgimport.py b/Lib/test/test_pkgimport.py
index eff7b5a..60f5c32 100644
--- a/Lib/test/test_pkgimport.py
+++ b/Lib/test/test_pkgimport.py
@@ -52,7 +52,7 @@
         try: __import__(self.module_name)
         except SyntaxError: pass
         else: raise RuntimeError('Failed to induce SyntaxError')
-        self.assert_(self.module_name not in sys.modules and
+        self.assertTrue(self.module_name not in sys.modules and
                      not hasattr(sys.modules[self.package_name], 'foo'))
 
         # ...make up a variable name that isn't bound in __builtins__
diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py
index 9bb5bdd..8b1815e 100644
--- a/Lib/test/test_platform.py
+++ b/Lib/test/test_platform.py
@@ -125,12 +125,12 @@
 
     def test_uname(self):
         res = platform.uname()
-        self.assert_(any(res))
+        self.assertTrue(any(res))
 
     def test_java_ver(self):
         res = platform.java_ver()
         if sys.platform == 'java':
-            self.assert_(all(res))
+            self.assertTrue(all(res))
 
     def test_win32_ver(self):
         res = platform.win32_ver()
@@ -148,7 +148,7 @@
                     real_ver = ln.strip().split()[-1]
                     break
             fd.close()
-            self.failIf(real_ver is None)
+            self.assertFalse(real_ver is None)
             self.assertEquals(res[0], real_ver)
 
             # res[1] claims to contain
diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py
index 1807bca..520c20f 100644
--- a/Lib/test/test_poplib.py
+++ b/Lib/test/test_poplib.py
@@ -258,7 +258,7 @@
             self.client = poplib.POP3_SSL(self.server.host, self.server.port)
 
         def test__all__(self):
-            self.assert_('POP3_SSL' in poplib.__all__)
+            self.assertTrue('POP3_SSL' in poplib.__all__)
 
 
 class TestTimeouts(TestCase):
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 73ad95e..2047e52 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -42,13 +42,13 @@
 
     def test_statvfs(self):
         if hasattr(posix, 'statvfs'):
-            self.assert_(posix.statvfs(os.curdir))
+            self.assertTrue(posix.statvfs(os.curdir))
 
     def test_fstatvfs(self):
         if hasattr(posix, 'fstatvfs'):
             fp = open(support.TESTFN)
             try:
-                self.assert_(posix.fstatvfs(fp.fileno()))
+                self.assertTrue(posix.fstatvfs(fp.fileno()))
             finally:
                 fp.close()
 
@@ -68,7 +68,7 @@
             fp = open(support.TESTFN)
             try:
                 fd = posix.dup(fp.fileno())
-                self.assert_(isinstance(fd, int))
+                self.assertTrue(isinstance(fd, int))
                 os.close(fd)
             finally:
                 fp.close()
@@ -123,13 +123,13 @@
         if hasattr(posix, 'fstat'):
             fp = open(support.TESTFN)
             try:
-                self.assert_(posix.fstat(fp.fileno()))
+                self.assertTrue(posix.fstat(fp.fileno()))
             finally:
                 fp.close()
 
     def test_stat(self):
         if hasattr(posix, 'stat'):
-            self.assert_(posix.stat(support.TESTFN))
+            self.assertTrue(posix.stat(support.TESTFN))
 
     if hasattr(posix, 'chown'):
         def test_chown(self):
@@ -165,21 +165,21 @@
 
     def test_lsdir(self):
         if hasattr(posix, 'lsdir'):
-            self.assert_(support.TESTFN in posix.lsdir(os.curdir))
+            self.assertTrue(support.TESTFN in posix.lsdir(os.curdir))
 
     def test_access(self):
         if hasattr(posix, 'access'):
-            self.assert_(posix.access(support.TESTFN, os.R_OK))
+            self.assertTrue(posix.access(support.TESTFN, os.R_OK))
 
     def test_umask(self):
         if hasattr(posix, 'umask'):
             old_mask = posix.umask(0)
-            self.assert_(isinstance(old_mask, int))
+            self.assertTrue(isinstance(old_mask, int))
             posix.umask(old_mask)
 
     def test_strerror(self):
         if hasattr(posix, 'strerror'):
-            self.assert_(posix.strerror(0))
+            self.assertTrue(posix.strerror(0))
 
     def test_pipe(self):
         if hasattr(posix, 'pipe'):
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index eb918f4..0efe3ff 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -26,7 +26,7 @@
             safe_rmdir(support.TESTFN + suffix)
 
     def assertIs(self, a, b):
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
     def test_normcase(self):
         # Check that normcase() is idempotent
@@ -200,8 +200,8 @@
         for s1 in testlist:
             for s2 in testlist:
                 p = posixpath.commonprefix([s1, s2])
-                self.assert_(s1.startswith(p))
-                self.assert_(s2.startswith(p))
+                self.assertTrue(s1.startswith(p))
+                self.assertTrue(s2.startswith(p))
                 if s1 != s2:
                     n = len(p)
                     self.assertNotEqual(s1[n:n+1], s2[n:n+1])
@@ -229,7 +229,7 @@
             f.close()
             self.assertEqual(d, b"foobar")
 
-            self.assert_(
+            self.assertTrue(
                 posixpath.getctime(support.TESTFN) <=
                 posixpath.getmtime(support.TESTFN)
             )
@@ -402,8 +402,8 @@
         except ImportError:
             pass
         else:
-            self.assert_(isinstance(posixpath.expanduser("~/"), str))
-            self.assert_(isinstance(posixpath.expanduser(b"~/"), bytes))
+            self.assertTrue(isinstance(posixpath.expanduser("~/"), str))
+            self.assertTrue(isinstance(posixpath.expanduser(b"~/"), bytes))
             # if home directory == root directory, this test makes no sense
             if posixpath.expanduser("~") != '/':
                 self.assertEqual(
@@ -414,10 +414,10 @@
                     posixpath.expanduser(b"~") + b"/",
                     posixpath.expanduser(b"~/")
                 )
-            self.assert_(isinstance(posixpath.expanduser("~root/"), str))
-            self.assert_(isinstance(posixpath.expanduser("~foo/"), str))
-            self.assert_(isinstance(posixpath.expanduser(b"~root/"), bytes))
-            self.assert_(isinstance(posixpath.expanduser(b"~foo/"), bytes))
+            self.assertTrue(isinstance(posixpath.expanduser("~root/"), str))
+            self.assertTrue(isinstance(posixpath.expanduser("~foo/"), str))
+            self.assertTrue(isinstance(posixpath.expanduser(b"~root/"), bytes))
+            self.assertTrue(isinstance(posixpath.expanduser(b"~foo/"), bytes))
 
             with support.EnvironmentVarGuard() as env:
                 env['HOME'] = '/'
@@ -481,14 +481,14 @@
         self.assertRaises(TypeError, posixpath.normpath)
 
     def test_abspath(self):
-        self.assert_("foo" in posixpath.abspath("foo"))
-        self.assert_(b"foo" in posixpath.abspath(b"foo"))
+        self.assertTrue("foo" in posixpath.abspath("foo"))
+        self.assertTrue(b"foo" in posixpath.abspath(b"foo"))
 
         self.assertRaises(TypeError, posixpath.abspath)
 
     def test_realpath(self):
-        self.assert_("foo" in realpath("foo"))
-        self.assert_(b"foo" in realpath(b"foo"))
+        self.assertTrue("foo" in realpath("foo"))
+        self.assertTrue(b"foo" in realpath(b"foo"))
         self.assertRaises(TypeError, posixpath.realpath)
 
     if hasattr(os, "symlink"):
diff --git a/Lib/test/test_pprint.py b/Lib/test/test_pprint.py
index 1469ff0..3d13b60 100644
--- a/Lib/test/test_pprint.py
+++ b/Lib/test/test_pprint.py
@@ -34,7 +34,7 @@
 
     def test_basic(self):
         # Verify .isrecursive() and .isreadable() w/o recursion
-        verify = self.assert_
+        verify = self.assertTrue
         pp = pprint.PrettyPrinter()
         for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, "yaddayadda",
                      self.a, self.b):
@@ -57,7 +57,7 @@
         self.d = {}
         self.d[0] = self.d[1] = self.d[2] = self.d
 
-        verify = self.assert_
+        verify = self.assertTrue
         pp = pprint.PrettyPrinter()
 
         for icky in self.a, self.b, self.d, (self.d, self.d):
@@ -85,7 +85,7 @@
 
     def test_unreadable(self):
         # Not recursive but not readable anyway
-        verify = self.assert_
+        verify = self.assertTrue
         pp = pprint.PrettyPrinter()
         for unreadable in type(3), pprint, pprint.isrecursive:
             # module-level convenience functions
@@ -108,7 +108,7 @@
         # it sorted a dict display if and only if the display required
         # multiple lines.  For that reason, dicts with more than one element
         # aren't tested here.
-        verify = self.assert_
+        verify = self.assertTrue
         for simple in (0, 0, 0+0j, 0.0, "", b"",
                        (), tuple2(), tuple3(),
                        [], list2(), list3(),
diff --git a/Lib/test/test_property.py b/Lib/test/test_property.py
index 4ce1da2..d9469d9 100644
--- a/Lib/test/test_property.py
+++ b/Lib/test/test_property.py
@@ -86,8 +86,8 @@
         self.assertEqual(base.spam, 10)
         self.assertEqual(base._spam, 10)
         delattr(base, "spam")
-        self.assert_(not hasattr(base, "spam"))
-        self.assert_(not hasattr(base, "_spam"))
+        self.assertTrue(not hasattr(base, "spam"))
+        self.assertTrue(not hasattr(base, "_spam"))
         base.spam = 20
         self.assertEqual(base.spam, 20)
         self.assertEqual(base._spam, 20)
diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py
index 450306c..406578a 100644
--- a/Lib/test/test_pwd.py
+++ b/Lib/test/test_pwd.py
@@ -13,19 +13,19 @@
         for e in entries:
             self.assertEqual(len(e), 7)
             self.assertEqual(e[0], e.pw_name)
-            self.assert_(isinstance(e.pw_name, str))
+            self.assertTrue(isinstance(e.pw_name, str))
             self.assertEqual(e[1], e.pw_passwd)
-            self.assert_(isinstance(e.pw_passwd, str))
+            self.assertTrue(isinstance(e.pw_passwd, str))
             self.assertEqual(e[2], e.pw_uid)
-            self.assert_(isinstance(e.pw_uid, int))
+            self.assertTrue(isinstance(e.pw_uid, int))
             self.assertEqual(e[3], e.pw_gid)
-            self.assert_(isinstance(e.pw_gid, int))
+            self.assertTrue(isinstance(e.pw_gid, int))
             self.assertEqual(e[4], e.pw_gecos)
-            self.assert_(isinstance(e.pw_gecos, str))
+            self.assertTrue(isinstance(e.pw_gecos, str))
             self.assertEqual(e[5], e.pw_dir)
-            self.assert_(isinstance(e.pw_dir, str))
+            self.assertTrue(isinstance(e.pw_dir, str))
             self.assertEqual(e[6], e.pw_shell)
-            self.assert_(isinstance(e.pw_shell, str))
+            self.assertTrue(isinstance(e.pw_shell, str))
 
             # The following won't work, because of duplicate entries
             # for one uid
@@ -43,8 +43,8 @@
         for e in entries:
             if not e[0] or e[0] == '+':
                 continue # skip NIS entries etc.
-            self.assert_(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name])
-            self.assert_(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid])
+            self.assertTrue(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name])
+            self.assertTrue(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid])
 
     def test_errors(self):
         self.assertRaises(TypeError, pwd.getpwuid)
diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py
index 9438c7b..30d8249 100644
--- a/Lib/test/test_pyclbr.py
+++ b/Lib/test/test_pyclbr.py
@@ -31,7 +31,7 @@
         ''' succeed iff hasattr(obj,attr) or attr in ignore. '''
         if attr in ignore: return
         if not hasattr(obj, attr): print("???", attr)
-        self.failUnless(hasattr(obj, attr),
+        self.assertTrue(hasattr(obj, attr),
                         'expected hasattr(%r, %r)' % (obj, attr))
 
 
@@ -40,7 +40,7 @@
         if key in ignore: return
         if key not in obj:
             print("***",key, file=sys.stderr)
-        self.failUnless(key in obj, "%r in %r" % (key, obj))
+        self.assertTrue(key in obj, "%r in %r" % (key, obj))
 
     def assertEqualsOrIgnored(self, a, b, ignore):
         ''' succeed iff a == b or a in ignore or b in ignore '''
@@ -84,12 +84,12 @@
             self.assertHasattr(module, name, ignore)
             py_item = getattr(module, name)
             if isinstance(value, pyclbr.Function):
-                self.assert_(isinstance(py_item, (FunctionType, BuiltinFunctionType)))
+                self.assertTrue(isinstance(py_item, (FunctionType, BuiltinFunctionType)))
                 if py_item.__module__ != moduleName:
                     continue   # skip functions that came from somewhere else
                 self.assertEquals(py_item.__module__, value.module)
             else:
-                self.failUnless(isinstance(py_item, type))
+                self.assertTrue(isinstance(py_item, type))
                 if py_item.__module__ != moduleName:
                     continue   # skip classes that came from somewhere else
 
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
index 00a2ada..76822af 100644
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -309,7 +309,7 @@
         # Check that pydocfodder module can be described
         from test import pydocfodder
         doc = pydoc.render_doc(pydocfodder)
-        self.assert_("pydocfodder" in doc)
+        self.assertTrue("pydocfodder" in doc)
 
     def test_classic_class(self):
         class C: "Classic class"
@@ -317,7 +317,7 @@
         self.assertEqual(pydoc.describe(C), 'class C')
         self.assertEqual(pydoc.describe(c), 'C')
         expected = 'C in module %s' % __name__
-        self.assert_(expected in pydoc.render_doc(c))
+        self.assertTrue(expected in pydoc.render_doc(c))
 
     def test_class(self):
         class C(object): "New-style class"
@@ -326,7 +326,7 @@
         self.assertEqual(pydoc.describe(C), 'class C')
         self.assertEqual(pydoc.describe(c), 'C')
         expected = 'C in module %s object' % __name__
-        self.assert_(expected in pydoc.render_doc(c))
+        self.assertTrue(expected in pydoc.render_doc(c))
 
 
 def test_main():
diff --git a/Lib/test/test_queue.py b/Lib/test/test_queue.py
index 22cdcad..95f80ac 100644
--- a/Lib/test/test_queue.py
+++ b/Lib/test/test_queue.py
@@ -103,12 +103,12 @@
                           "Didn't seem to queue the correct data!")
         for i in range(QUEUE_SIZE-1):
             q.put(i)
-            self.assert_(q.qsize(), "Queue should not be empty")
-        self.assert_(not qfull(q), "Queue should not be full")
+            self.assertTrue(q.qsize(), "Queue should not be empty")
+        self.assertTrue(not qfull(q), "Queue should not be full")
         last = 2 * QUEUE_SIZE
         full = 3 * 2 * QUEUE_SIZE
         q.put(last)
-        self.assert_(qfull(q), "Queue should be full")
+        self.assertTrue(qfull(q), "Queue should be full")
         try:
             q.put(full, block=0)
             self.fail("Didn't appear to block with a full queue")
@@ -125,7 +125,7 @@
         # Empty it
         for i in range(QUEUE_SIZE):
             q.get()
-        self.assert_(not q.qsize(), "Queue should be empty")
+        self.assertTrue(not q.qsize(), "Queue should be empty")
         try:
             q.get(block=0)
             self.fail("Didn't appear to block with an empty queue")
@@ -247,7 +247,7 @@
         except FailingQueueException:
             pass
         q.put("last")
-        self.assert_(qfull(q), "Queue should be full")
+        self.assertTrue(qfull(q), "Queue should be full")
         # Test a failing blocking put
         q.fail_next_put = True
         try:
@@ -269,17 +269,17 @@
         # Check the Queue isn't damaged.
         # put failed, but get succeeded - re-add
         q.put("last")
-        self.assert_(qfull(q), "Queue should be full")
+        self.assertTrue(qfull(q), "Queue should be full")
         q.get()
-        self.assert_(not qfull(q), "Queue should not be full")
+        self.assertTrue(not qfull(q), "Queue should not be full")
         q.put("last")
-        self.assert_(qfull(q), "Queue should be full")
+        self.assertTrue(qfull(q), "Queue should be full")
         # Test a blocking put
         self.do_blocking_test(q.put, ("full",), q.get, ())
         # Empty it
         for i in range(QUEUE_SIZE):
             q.get()
-        self.assert_(not q.qsize(), "Queue should be empty")
+        self.assertTrue(not q.qsize(), "Queue should be empty")
         q.put("first")
         q.fail_next_get = True
         try:
@@ -287,16 +287,16 @@
             self.fail("The queue didn't fail when it should have")
         except FailingQueueException:
             pass
-        self.assert_(q.qsize(), "Queue should not be empty")
+        self.assertTrue(q.qsize(), "Queue should not be empty")
         q.fail_next_get = True
         try:
             q.get(timeout=0.1)
             self.fail("The queue didn't fail when it should have")
         except FailingQueueException:
             pass
-        self.assert_(q.qsize(), "Queue should not be empty")
+        self.assertTrue(q.qsize(), "Queue should not be empty")
         q.get()
-        self.assert_(not q.qsize(), "Queue should be empty")
+        self.assertTrue(not q.qsize(), "Queue should be empty")
         q.fail_next_get = True
         try:
             self.do_exceptional_blocking_test(q.get, (), q.put, ('empty',),
@@ -305,9 +305,9 @@
         except FailingQueueException:
             pass
         # put succeeded, but get failed.
-        self.assert_(q.qsize(), "Queue should not be empty")
+        self.assertTrue(q.qsize(), "Queue should not be empty")
         q.get()
-        self.assert_(not q.qsize(), "Queue should be empty")
+        self.assertTrue(not q.qsize(), "Queue should be empty")
 
     def test_failing_queue(self):
         # Test to make sure a queue is functioning correctly.
diff --git a/Lib/test/test_raise.py b/Lib/test/test_raise.py
index 5a63b86..ff4800b 100644
--- a/Lib/test/test_raise.py
+++ b/Lib/test/test_raise.py
@@ -28,7 +28,7 @@
         try:
             raise
         except RuntimeError as e:
-            self.failUnless("No active exception" in str(e))
+            self.assertTrue("No active exception" in str(e))
         else:
             self.fail("No exception raised")
 
@@ -40,7 +40,7 @@
                 exc1 = e
                 raise
         except IndexError as exc2:
-            self.failUnless(exc1 is exc2)
+            self.assertTrue(exc1 is exc2)
         else:
             self.fail("No exception raised")
 
@@ -127,7 +127,7 @@
         try:
             raise IndexError from 5
         except TypeError as e:
-            self.failUnless("exception cause" in str(e))
+            self.assertTrue("exception cause" in str(e))
         else:
             self.fail("No exception raised")
 
@@ -135,7 +135,7 @@
         try:
             raise IndexError from KeyError
         except IndexError as e:
-            self.failUnless(isinstance(e.__cause__, KeyError))
+            self.assertTrue(isinstance(e.__cause__, KeyError))
         else:
             self.fail("No exception raised")
 
@@ -144,7 +144,7 @@
         try:
             raise IndexError from cause
         except IndexError as e:
-            self.failUnless(e.__cause__ is cause)
+            self.assertTrue(e.__cause__ is cause)
         else:
             self.fail("No exception raised")
 
@@ -166,7 +166,7 @@
         try:
             raise IndexError()
         except IndexError as e:
-            self.failUnless(isinstance(e.__traceback__, types.TracebackType))
+            self.assertTrue(isinstance(e.__traceback__, types.TracebackType))
         else:
             self.fail("No exception raised")
 
@@ -203,7 +203,7 @@
                 raise OSError()
         except OSError as e:
             self.assertNotEqual(e.__context__, context)
-            self.failUnless(isinstance(e.__context__, context))
+            self.assertTrue(isinstance(e.__context__, context))
         else:
             self.fail("No exception raised")
 
@@ -216,7 +216,7 @@
                 raise OSError
         except OSError as e:
             self.assertNotEqual(e.__context__, context)
-            self.failUnless(isinstance(e.__context__, context))
+            self.assertTrue(isinstance(e.__context__, context))
         else:
             self.fail("No exception raised")
 
@@ -227,7 +227,7 @@
             except:
                 raise OSError
         except OSError as e:
-            self.failUnless(isinstance(e.__context__, ZeroDivisionError))
+            self.assertTrue(isinstance(e.__context__, ZeroDivisionError))
         else:
             self.fail("No exception raised")
 
@@ -238,7 +238,7 @@
             except:
                 xyzzy
         except NameError as e:
-            self.failUnless(isinstance(e.__context__, ZeroDivisionError))
+            self.assertTrue(isinstance(e.__context__, ZeroDivisionError))
         else:
             self.fail("No exception raised")
 
@@ -249,7 +249,7 @@
             finally:
                 raise OSError
         except OSError as e:
-            self.failUnless(e.__context__ is None)
+            self.assertTrue(e.__context__ is None)
         else:
             self.fail("No exception raised")
 
@@ -260,7 +260,7 @@
             finally:
                 raise OSError
         except OSError as e:
-            self.failUnless(isinstance(e.__context__, ZeroDivisionError))
+            self.assertTrue(isinstance(e.__context__, ZeroDivisionError))
         else:
             self.fail("No exception raised")
 
@@ -274,7 +274,7 @@
             with ContextManager():
                 1/0
         except NameError as e:
-            self.failUnless(isinstance(e.__context__, ZeroDivisionError))
+            self.assertTrue(isinstance(e.__context__, ZeroDivisionError))
         else:
             self.fail("No exception raised")
 
@@ -286,7 +286,7 @@
             except ZeroDivisionError as e:
                 raise e
         except ZeroDivisionError as e:
-            self.failUnless(e.__context__ is None, e.__context__)
+            self.assertTrue(e.__context__ is None, e.__context__)
 
     def test_reraise_cycle_broken(self):
         # Non-trivial context cycles (through re-raising a previous exception)
@@ -300,7 +300,7 @@
                 except ZeroDivisionError:
                     raise a
         except NameError as e:
-            self.failUnless(e.__context__.__context__ is None)
+            self.assertTrue(e.__context__.__context__ is None)
 
     def test_3118(self):
         # deleting the generator caused the __context__ to be cleared
@@ -320,7 +320,7 @@
                     del g
                     raise KeyError
             except Exception as e:
-                self.assert_(isinstance(e.__context__, ValueError))
+                self.assertTrue(isinstance(e.__context__, ValueError))
 
         f()
 
@@ -344,7 +344,7 @@
                     raise TypeError
             except Exception as e:
                 self.assertNotEqual(e.__context__, None)
-                self.assert_(isinstance(e.__context__, AttributeError))
+                self.assertTrue(isinstance(e.__context__, AttributeError))
 
         with support.captured_output("stderr"):
             f()
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index f2af196..df07b76 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -52,7 +52,7 @@
             self.assertEqual(len(s), k)
             uniq = set(s)
             self.assertEqual(len(uniq), k)
-            self.failUnless(uniq <= set(population))
+            self.assertTrue(uniq <= set(population))
         self.assertEqual(self.gen.sample([], 0), [])  # test edge case N==k==0
 
     def test_sample_distribution(self):
@@ -161,7 +161,7 @@
         cum = 0
         for i in range(100):
             r = self.gen.randrange(span)
-            self.assert_(0 <= r < span)
+            self.assertTrue(0 <= r < span)
             cum |= r
         self.assertEqual(cum, span-1)
 
@@ -171,7 +171,7 @@
             stop = self.gen.randrange(2 ** (i-2))
             if stop <= start:
                 return
-            self.assert_(start <= self.gen.randrange(start, stop) < stop)
+            self.assertTrue(start <= self.gen.randrange(start, stop) < stop)
 
     def test_rangelimits(self):
         for start, stop in [(-2,0), (-(2**60)-2,-(2**60)), (2**60,2**60+2)]:
@@ -181,7 +181,7 @@
     def test_genrandbits(self):
         # Verify ranges
         for k in range(1, 1000):
-            self.assert_(0 <= self.gen.getrandbits(k) < 2**k)
+            self.assertTrue(0 <= self.gen.getrandbits(k) < 2**k)
 
         # Verify all bits active
         getbits = self.gen.getrandbits
@@ -211,13 +211,13 @@
 
             n += n - 1      # check 1 below the next power of two
             k = int(1.00001 + _log(n, 2))
-            self.assert_(k in [numbits, numbits+1])
-            self.assert_(2**k > n > 2**(k-2))
+            self.assertTrue(k in [numbits, numbits+1])
+            self.assertTrue(2**k > n > 2**(k-2))
 
             n -= n >> 15     # check a little farther below the next power of two
             k = int(1.00001 + _log(n, 2))
             self.assertEqual(k, numbits)        # note the stronger assertion
-            self.assert_(2**k > n > 2**(k-1))   # note the stronger assertion
+            self.assertTrue(2**k > n > 2**(k-1))   # note the stronger assertion
 
 
 class MersenneTwister_TestBasicOps(TestBasicOps):
@@ -313,7 +313,7 @@
         cum = 0
         for i in range(100):
             r = self.gen.randrange(span)
-            self.assert_(0 <= r < span)
+            self.assertTrue(0 <= r < span)
             cum |= r
         self.assertEqual(cum, span-1)
 
@@ -323,7 +323,7 @@
             stop = self.gen.randrange(2 ** (i-2))
             if stop <= start:
                 return
-            self.assert_(start <= self.gen.randrange(start, stop) < stop)
+            self.assertTrue(start <= self.gen.randrange(start, stop) < stop)
 
     def test_rangelimits(self):
         for start, stop in [(-2,0), (-(2**60)-2,-(2**60)), (2**60,2**60+2)]:
@@ -337,7 +337,7 @@
                          97904845777343510404718956115)
         # Verify ranges
         for k in range(1, 1000):
-            self.assert_(0 <= self.gen.getrandbits(k) < 2**k)
+            self.assertTrue(0 <= self.gen.getrandbits(k) < 2**k)
 
         # Verify all bits active
         getbits = self.gen.getrandbits
@@ -367,20 +367,20 @@
 
             n += n - 1      # check 1 below the next power of two
             k = int(1.00001 + _log(n, 2))
-            self.assert_(k in [numbits, numbits+1])
-            self.assert_(2**k > n > 2**(k-2))
+            self.assertTrue(k in [numbits, numbits+1])
+            self.assertTrue(2**k > n > 2**(k-2))
 
             n -= n >> 15     # check a little farther below the next power of two
             k = int(1.00001 + _log(n, 2))
             self.assertEqual(k, numbits)        # note the stronger assertion
-            self.assert_(2**k > n > 2**(k-1))   # note the stronger assertion
+            self.assertTrue(2**k > n > 2**(k-1))   # note the stronger assertion
 
     def test_randrange_bug_1590891(self):
         start = 1000000000000
         stop = -100000000000000000000
         step = -200
         x = self.gen.randrange(start, stop, step)
-        self.assert_(stop < x <= start)
+        self.assertTrue(stop < x <= start)
         self.assertEqual((x+stop)%step, 0)
 
 def gamma(z, sqrt2pi=(2.0*pi)**0.5):
@@ -458,7 +458,7 @@
 
     def test__all__(self):
         # tests validity but not completeness of the __all__ list
-        self.failUnless(set(random.__all__) <= set(dir(random)))
+        self.assertTrue(set(random.__all__) <= set(dir(random)))
 
     def test_random_subclass_with_kwargs(self):
         # SF bug #1486663 -- this used to erroneously raise a TypeError
diff --git a/Lib/test/test_range.py b/Lib/test/test_range.py
index 7650103..24836d0 100644
--- a/Lib/test/test_range.py
+++ b/Lib/test/test_range.py
@@ -26,18 +26,18 @@
         self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2])
 
         seq = list(range(a, b, c))
-        self.assert_(a in seq)
-        self.assert_(b not in seq)
+        self.assertTrue(a in seq)
+        self.assertTrue(b not in seq)
         self.assertEqual(len(seq), 2)
 
         seq = list(range(b, a, -c))
-        self.assert_(b in seq)
-        self.assert_(a not in seq)
+        self.assertTrue(b in seq)
+        self.assertTrue(a not in seq)
         self.assertEqual(len(seq), 2)
 
         seq = list(range(-a, -b, -c))
-        self.assert_(-a in seq)
-        self.assert_(-b not in seq)
+        self.assertTrue(-a in seq)
+        self.assertTrue(-b not in seq)
         self.assertEqual(len(seq), 2)
 
         self.assertRaises(TypeError, range)
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index a857aab..383b56a 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -582,7 +582,7 @@
                          [":", "::", ":::"])
 
     def test_bug_926075(self):
-        self.assert_(re.compile('bug_926075') is not
+        self.assertTrue(re.compile('bug_926075') is not
                      re.compile(b'bug_926075'))
 
     def test_bug_931848(self):
diff --git a/Lib/test/test_reprlib.py b/Lib/test/test_reprlib.py
index 8bd0ccf..12e207b 100644
--- a/Lib/test/test_reprlib.py
+++ b/Lib/test/test_reprlib.py
@@ -123,12 +123,12 @@
         eq(r(i3), ("<ClassWithFailingRepr instance at %x>"%id(i3)))
 
         s = r(ClassWithFailingRepr)
-        self.failUnless(s.startswith("<class "))
-        self.failUnless(s.endswith(">"))
-        self.failUnless(s.find("...") in [12, 13])
+        self.assertTrue(s.startswith("<class "))
+        self.assertTrue(s.endswith(">"))
+        self.assertTrue(s.find("...") in [12, 13])
 
     def test_lambda(self):
-        self.failUnless(repr(lambda x: x).startswith(
+        self.assertTrue(repr(lambda x: x).startswith(
             "<function <lambda"))
         # XXX anonymous functions?  see func_repr
 
@@ -137,7 +137,7 @@
         # Functions
         eq(repr(hash), '<built-in function hash>')
         # Methods
-        self.failUnless(repr(''.split).startswith(
+        self.assertTrue(repr(''.split).startswith(
             '<built-in method split of str object at 0x'))
 
     def test_range(self):
@@ -178,9 +178,9 @@
         class C:
             def foo(cls): pass
         x = staticmethod(C.foo)
-        self.failUnless(repr(x).startswith('<staticmethod object at 0x'))
+        self.assertTrue(repr(x).startswith('<staticmethod object at 0x'))
         x = classmethod(C.foo)
-        self.failUnless(repr(x).startswith('<classmethod object at 0x'))
+        self.assertTrue(repr(x).startswith('<classmethod object at 0x'))
 
     def test_unsortable(self):
         # Repr.repr() used to call sorted() on sets, frozensets and dicts
@@ -267,7 +267,7 @@
 ''')
         from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import baz
         ibaz = baz.baz()
-        self.failUnless(repr(ibaz).startswith(
+        self.assertTrue(repr(ibaz).startswith(
             "<%s.baz object at 0x" % baz.__name__))
 
     def test_method(self):
@@ -278,11 +278,11 @@
 ''')
         from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import qux
         # Unbound methods first
-        self.failUnless(repr(qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod).startswith(
+        self.assertTrue(repr(qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod).startswith(
         '<function amethod'))
         # Bound method next
         iqux = qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
-        self.failUnless(repr(iqux.amethod).startswith(
+        self.assertTrue(repr(iqux.amethod).startswith(
             '<bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <%s.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa object at 0x' \
             % (qux.__name__,) ))
 
diff --git a/Lib/test/test_richcmp.py b/Lib/test/test_richcmp.py
index 72e636d..a788c60 100644
--- a/Lib/test/test_richcmp.py
+++ b/Lib/test/test_richcmp.py
@@ -106,7 +106,7 @@
             self.assertEqual(len(realres), len(expres))
             for i in range(len(realres)):
                 # results are bool, so we can use "is" here
-                self.assert_(realres[i] is expres[i])
+                self.assertTrue(realres[i] is expres[i])
 
     def test_mixed(self):
         # check that comparisons involving Vector objects
@@ -163,7 +163,7 @@
                 for op in opmap[opname]:
                     realres = op(ta, tb)
                     realres = getattr(realres, "x", realres)
-                    self.assert_(realres is expres)
+                    self.assertTrue(realres is expres)
 
     def test_values(self):
         # check all operators and all comparison results
@@ -237,8 +237,8 @@
         b.append(17)
         # Even recursive lists of different lengths are different,
         # but they cannot be ordered
-        self.assert_(not (a == b))
-        self.assert_(a != b)
+        self.assertTrue(not (a == b))
+        self.assertTrue(a != b)
         self.assertRaises(RuntimeError, operator.lt, a, b)
         self.assertRaises(RuntimeError, operator.le, a, b)
         self.assertRaises(RuntimeError, operator.gt, a, b)
@@ -248,9 +248,9 @@
         self.assertRaises(RuntimeError, operator.ne, a, b)
         a.insert(0, 11)
         b.insert(0, 12)
-        self.assert_(not (a == b))
-        self.assert_(a != b)
-        self.assert_(a < b)
+        self.assertTrue(not (a == b))
+        self.assertTrue(a != b)
+        self.assertTrue(a < b)
 
 class DictTest(unittest.TestCase):
 
@@ -272,7 +272,7 @@
         self.assertEqual(imag1a, imag1a)
         self.assertEqual(imag1a, imag1b)
         self.assertEqual(imag2, imag2)
-        self.assert_(imag1a != imag2)
+        self.assertTrue(imag1a != imag2)
         for opname in ("lt", "le", "gt", "ge"):
             for op in opmap[opname]:
                 self.assertRaises(TypeError, op, imag1a, imag2)
@@ -280,7 +280,7 @@
 class ListTest(unittest.TestCase):
 
     def assertIs(self, a, b):
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
     def test_coverage(self):
         # exercise all comparisons for lists
diff --git a/Lib/test/test_robotparser.py b/Lib/test/test_robotparser.py
index 9c47e31..cc8b390 100644
--- a/Lib/test/test_robotparser.py
+++ b/Lib/test/test_robotparser.py
@@ -22,9 +22,9 @@
             url = self.url
             agent = self.agent
         if self.good:
-            self.failUnless(self.parser.can_fetch(agent, url))
+            self.assertTrue(self.parser.can_fetch(agent, url))
         else:
-            self.failIf(self.parser.can_fetch(agent, url))
+            self.assertFalse(self.parser.can_fetch(agent, url))
 
     def __str__(self):
         return self.str
diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py
index 43691cb..43141e5 100644
--- a/Lib/test/test_runpy.py
+++ b/Lib/test/test_runpy.py
@@ -37,14 +37,14 @@
     def test_run_code(self):
         saved_argv0 = sys.argv[0]
         d = _run_code(self.test_source, {})
-        self.failUnless(d["result"] == self.expected_result)
-        self.failUnless(d["__name__"] is None)
-        self.failUnless(d["__file__"] is None)
-        self.failUnless(d["__loader__"] is None)
-        self.failUnless(d["__package__"] is None)
-        self.failUnless(d["run_argv0"] is saved_argv0)
-        self.failUnless("run_name" not in d)
-        self.failUnless(sys.argv[0] is saved_argv0)
+        self.assertTrue(d["result"] == self.expected_result)
+        self.assertTrue(d["__name__"] is None)
+        self.assertTrue(d["__file__"] is None)
+        self.assertTrue(d["__loader__"] is None)
+        self.assertTrue(d["__package__"] is None)
+        self.assertTrue(d["run_argv0"] is saved_argv0)
+        self.assertTrue("run_name" not in d)
+        self.assertTrue(sys.argv[0] is saved_argv0)
 
     def test_run_module_code(self):
         initial = object()
@@ -60,19 +60,19 @@
                               file,
                               loader,
                               package)
-        self.failUnless("result" not in d1)
-        self.failUnless(d2["initial"] is initial)
+        self.assertTrue("result" not in d1)
+        self.assertTrue(d2["initial"] is initial)
         self.assertEqual(d2["result"], self.expected_result)
         self.assertEqual(d2["nested"]["x"], 1)
-        self.failUnless(d2["__name__"] is name)
-        self.failUnless(d2["run_name_in_sys_modules"])
-        self.failUnless(d2["module_in_sys_modules"])
-        self.failUnless(d2["__file__"] is file)
-        self.failUnless(d2["run_argv0"] is file)
-        self.failUnless(d2["__loader__"] is loader)
-        self.failUnless(d2["__package__"] is package)
-        self.failUnless(sys.argv[0] is saved_argv0)
-        self.failUnless(name not in sys.modules)
+        self.assertTrue(d2["__name__"] is name)
+        self.assertTrue(d2["run_name_in_sys_modules"])
+        self.assertTrue(d2["module_in_sys_modules"])
+        self.assertTrue(d2["__file__"] is file)
+        self.assertTrue(d2["run_argv0"] is file)
+        self.assertTrue(d2["__loader__"] is loader)
+        self.assertTrue(d2["__package__"] is package)
+        self.assertTrue(sys.argv[0] is saved_argv0)
+        self.assertTrue(name not in sys.modules)
 
 
 class RunModuleTest(unittest.TestCase):
@@ -159,14 +159,14 @@
         try:
             if verbose: print("Running from source:", mod_name)
             d1 = run_module(mod_name) # Read from source
-            self.failUnless("x" in d1)
+            self.assertTrue("x" in d1)
             self.assertEqual(d1["x"], 1)
             del d1 # Ensure __loader__ entry doesn't keep file open
             __import__(mod_name)
             os.remove(mod_fname)
             if verbose: print("Running from compiled:", mod_name)
             d2 = run_module(mod_name) # Read from bytecode
-            self.failUnless("x" in d2)
+            self.assertTrue("x" in d2)
             self.assertEqual(d2["x"], 1)
             del d2 # Ensure __loader__ entry doesn't keep file open
         finally:
@@ -211,19 +211,19 @@
             pkg_name = mod_name.rpartition('.')[0]
             if verbose: print("Running from source:", mod_name)
             d1 = run_module(mod_name, run_name=run_name) # Read from source
-            self.failUnless("__package__" in d1)
-            self.failUnless(d1["__package__"] == pkg_name)
-            self.failUnless("sibling" in d1)
-            self.failUnless("nephew" in d1)
+            self.assertTrue("__package__" in d1)
+            self.assertTrue(d1["__package__"] == pkg_name)
+            self.assertTrue("sibling" in d1)
+            self.assertTrue("nephew" in d1)
             del d1 # Ensure __loader__ entry doesn't keep file open
             __import__(mod_name)
             os.remove(mod_fname)
             if verbose: print("Running from compiled:", mod_name)
             d2 = run_module(mod_name, run_name=run_name) # Read from bytecode
-            self.failUnless("__package__" in d2)
-            self.failUnless(d2["__package__"] == pkg_name)
-            self.failUnless("sibling" in d2)
-            self.failUnless("nephew" in d2)
+            self.assertTrue("__package__" in d2)
+            self.assertTrue(d2["__package__"] == pkg_name)
+            self.assertTrue("sibling" in d2)
+            self.assertTrue("nephew" in d2)
             del d2 # Ensure __loader__ entry doesn't keep file open
         finally:
             self._del_pkg(pkg_dir, depth, mod_name)
diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py
index fb1e26f..84ceafa 100644
--- a/Lib/test/test_scope.py
+++ b/Lib/test/test_scope.py
@@ -443,7 +443,7 @@
     locals()['looked_up_by_load_name'] = True
     passed = looked_up_by_load_name
 
-self.assert_(X.passed)
+self.assertTrue(X.passed)
 """)
 
     def testLocalsFunction(self):
@@ -458,7 +458,7 @@
             return g
 
         d = f(2)(4)
-        self.assert_('h' in d)
+        self.assertTrue('h' in d)
         del d['h']
         self.assertEqual(d, {'x': 2, 'y': 7, 'w': 6})
 
@@ -492,8 +492,8 @@
             return C
 
         varnames = f(1).z
-        self.assert_("x" not in varnames)
-        self.assert_("y" in varnames)
+        self.assertTrue("x" not in varnames)
+        self.assertTrue("y" in varnames)
 
     def testLocalsClass_WithTrace(self):
         # Issue23728: after the trace function returns, the locals()
@@ -671,7 +671,7 @@
 
         c = f(0)
         self.assertEqual(c.get(), 1)
-        self.assert_("x" not in c.__class__.__dict__)
+        self.assertTrue("x" not in c.__class__.__dict__)
 
 
     def testNonLocalGenerator(self):
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py
index 222726c..2b43a16 100644
--- a/Lib/test/test_set.py
+++ b/Lib/test/test_set.py
@@ -65,7 +65,7 @@
             self.assertEqual(c in self.s, c in self.d)
         self.assertRaises(TypeError, self.s.__contains__, [[]])
         s = self.thetype([frozenset(self.letters)])
-        self.assert_(self.thetype(self.letters) in s)
+        self.assertTrue(self.thetype(self.letters) in s)
 
     def test_union(self):
         u = self.s.union(self.otherword)
@@ -129,7 +129,7 @@
                     actual = s1.isdisjoint(s2)
                     expected = f(s1, s2)
                     self.assertEqual(actual, expected)
-                    self.assert_(actual is True or actual is False)
+                    self.assertTrue(actual is True or actual is False)
 
     def test_and(self):
         i = self.s.intersection(self.otherword)
@@ -209,19 +209,19 @@
 
     def test_sub_and_super(self):
         p, q, r = map(self.thetype, ['ab', 'abcde', 'def'])
-        self.assert_(p < q)
-        self.assert_(p <= q)
-        self.assert_(q <= q)
-        self.assert_(q > p)
-        self.assert_(q >= p)
-        self.failIf(q < r)
-        self.failIf(q <= r)
-        self.failIf(q > r)
-        self.failIf(q >= r)
-        self.assert_(set('a').issubset('abc'))
-        self.assert_(set('abc').issuperset('a'))
-        self.failIf(set('a').issubset('cbs'))
-        self.failIf(set('cbs').issuperset('a'))
+        self.assertTrue(p < q)
+        self.assertTrue(p <= q)
+        self.assertTrue(q <= q)
+        self.assertTrue(q > p)
+        self.assertTrue(q >= p)
+        self.assertFalse(q < r)
+        self.assertFalse(q <= r)
+        self.assertFalse(q > r)
+        self.assertFalse(q >= r)
+        self.assertTrue(set('a').issubset('abc'))
+        self.assertTrue(set('abc').issuperset('a'))
+        self.assertFalse(set('a').issubset('cbs'))
+        self.assertFalse(set('cbs').issuperset('a'))
 
     def test_pickling(self):
         for i in range(pickle.HIGHEST_PROTOCOL + 1):
@@ -269,7 +269,7 @@
         s=H()
         f=set()
         f.add(s)
-        self.assert_(s in f)
+        self.assertTrue(s in f)
         f.remove(s)
         f.add(s)
         f.discard(s)
@@ -338,7 +338,7 @@
         obj.x = iter(container)
         del obj, container
         gc.collect()
-        self.assert_(ref() is None, "Cycle was not collected")
+        self.assertTrue(ref() is None, "Cycle was not collected")
 
 class TestSet(TestJointOps):
     thetype = set
@@ -379,7 +379,7 @@
 
     def test_add(self):
         self.s.add('Q')
-        self.assert_('Q' in self.s)
+        self.assertTrue('Q' in self.s)
         dup = self.s.copy()
         self.s.add('Q')
         self.assertEqual(self.s, dup)
@@ -387,13 +387,13 @@
 
     def test_remove(self):
         self.s.remove('a')
-        self.assert_('a' not in self.s)
+        self.assertTrue('a' not in self.s)
         self.assertRaises(KeyError, self.s.remove, 'Q')
         self.assertRaises(TypeError, self.s.remove, [])
         s = self.thetype([frozenset(self.word)])
-        self.assert_(self.thetype(self.word) in s)
+        self.assertTrue(self.thetype(self.word) in s)
         s.remove(self.thetype(self.word))
-        self.assert_(self.thetype(self.word) not in s)
+        self.assertTrue(self.thetype(self.word) not in s)
         self.assertRaises(KeyError, self.s.remove, self.thetype(self.word))
 
     def test_remove_keyerror_unpacking(self):
@@ -412,7 +412,7 @@
         try:
             self.s.remove(key)
         except KeyError as e:
-            self.assert_(e.args[0] is key,
+            self.assertTrue(e.args[0] is key,
                          "KeyError should be {0}, not {1}".format(key,
                                                                   e.args[0]))
         else:
@@ -420,26 +420,26 @@
 
     def test_discard(self):
         self.s.discard('a')
-        self.assert_('a' not in self.s)
+        self.assertTrue('a' not in self.s)
         self.s.discard('Q')
         self.assertRaises(TypeError, self.s.discard, [])
         s = self.thetype([frozenset(self.word)])
-        self.assert_(self.thetype(self.word) in s)
+        self.assertTrue(self.thetype(self.word) in s)
         s.discard(self.thetype(self.word))
-        self.assert_(self.thetype(self.word) not in s)
+        self.assertTrue(self.thetype(self.word) not in s)
         s.discard(self.thetype(self.word))
 
     def test_pop(self):
         for i in range(len(self.s)):
             elem = self.s.pop()
-            self.assert_(elem not in self.s)
+            self.assertTrue(elem not in self.s)
         self.assertRaises(KeyError, self.s.pop)
 
     def test_update(self):
         retval = self.s.update(self.otherword)
         self.assertEqual(retval, None)
         for c in (self.word + self.otherword):
-            self.assert_(c in self.s)
+            self.assertTrue(c in self.s)
         self.assertRaises(PassThru, self.s.update, check_pass_thru())
         self.assertRaises(TypeError, self.s.update, [[]])
         for p, q in (('cdc', 'abcd'), ('efgfe', 'abcefg'), ('ccb', 'abc'), ('ef', 'abcef')):
@@ -457,16 +457,16 @@
     def test_ior(self):
         self.s |= set(self.otherword)
         for c in (self.word + self.otherword):
-            self.assert_(c in self.s)
+            self.assertTrue(c in self.s)
 
     def test_intersection_update(self):
         retval = self.s.intersection_update(self.otherword)
         self.assertEqual(retval, None)
         for c in (self.word + self.otherword):
             if c in self.otherword and c in self.word:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru())
         self.assertRaises(TypeError, self.s.intersection_update, [[]])
         for p, q in (('cdc', 'c'), ('efgfe', ''), ('ccb', 'bc'), ('ef', '')):
@@ -484,18 +484,18 @@
         self.s &= set(self.otherword)
         for c in (self.word + self.otherword):
             if c in self.otherword and c in self.word:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_difference_update(self):
         retval = self.s.difference_update(self.otherword)
         self.assertEqual(retval, None)
         for c in (self.word + self.otherword):
             if c in self.word and c not in self.otherword:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(PassThru, self.s.difference_update, check_pass_thru())
         self.assertRaises(TypeError, self.s.difference_update, [[]])
         self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
@@ -521,18 +521,18 @@
         self.s -= set(self.otherword)
         for c in (self.word + self.otherword):
             if c in self.word and c not in self.otherword:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_symmetric_difference_update(self):
         retval = self.s.symmetric_difference_update(self.otherword)
         self.assertEqual(retval, None)
         for c in (self.word + self.otherword):
             if (c in self.word) ^ (c in self.otherword):
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru())
         self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
         for p, q in (('cdc', 'abd'), ('efgfe', 'abcefg'), ('ccb', 'a'), ('ef', 'abcef')):
@@ -545,9 +545,9 @@
         self.s ^= set(self.otherword)
         for c in (self.word + self.otherword):
             if (c in self.word) ^ (c in self.otherword):
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_inplace_on_self(self):
         t = self.s.copy()
@@ -590,19 +590,19 @@
 
         myobj = TestRichSetCompare()
         myset < myobj
-        self.assert_(myobj.gt_called)
+        self.assertTrue(myobj.gt_called)
 
         myobj = TestRichSetCompare()
         myset > myobj
-        self.assert_(myobj.lt_called)
+        self.assertTrue(myobj.lt_called)
 
         myobj = TestRichSetCompare()
         myset <= myobj
-        self.assert_(myobj.ge_called)
+        self.assertTrue(myobj.ge_called)
 
         myobj = TestRichSetCompare()
         myset >= myobj
-        self.assert_(myobj.le_called)
+        self.assertTrue(myobj.le_called)
 
     # C API test only available in a debug build
     if hasattr(set, "test_c_api"):
@@ -814,7 +814,7 @@
 
     def test_iteration(self):
         for v in self.set:
-            self.assert_(v in self.values)
+            self.assertTrue(v in self.values)
         setiter = iter(self.set)
         # note: __length_hint__ is an internal undocumented API,
         # don't rely on it in your own programs
@@ -849,10 +849,10 @@
         self.repr   = "{3}"
 
     def test_in(self):
-        self.failUnless(3 in self.set)
+        self.assertTrue(3 in self.set)
 
     def test_not_in(self):
-        self.failUnless(2 not in self.set)
+        self.assertTrue(2 not in self.set)
 
 #------------------------------------------------------------------------------
 
@@ -866,10 +866,10 @@
         self.repr   = "{(0, 'zero')}"
 
     def test_in(self):
-        self.failUnless((0, "zero") in self.set)
+        self.assertTrue((0, "zero") in self.set)
 
     def test_not_in(self):
-        self.failUnless(9 not in self.set)
+        self.assertTrue(9 not in self.set)
 
 #------------------------------------------------------------------------------
 
@@ -1186,7 +1186,7 @@
             popped[self.set.pop()] = None
         self.assertEqual(len(popped), len(self.values))
         for v in self.values:
-            self.failUnless(v in popped)
+            self.assertTrue(v in popped)
 
     def test_update_empty_tuple(self):
         self.set.update(())
@@ -1455,7 +1455,7 @@
         set_list = sorted(self.set, key=repr)
         self.assertEqual(len(dup_list), len(set_list))
         for i in range(len(dup_list)):
-            self.failUnless(dup_list[i] is set_list[i])
+            self.assertTrue(dup_list[i] is set_list[i])
 
     def test_deep_copy(self):
         dup = copy.deepcopy(self.set)
@@ -1505,13 +1505,13 @@
 
     def test_binopsVsSubsets(self):
         a, b = self.a, self.b
-        self.assert_(a - b < a)
-        self.assert_(b - a < b)
-        self.assert_(a & b < a)
-        self.assert_(a & b < b)
-        self.assert_(a | b > a)
-        self.assert_(a | b > b)
-        self.assert_(a ^ b < a | b)
+        self.assertTrue(a - b < a)
+        self.assertTrue(b - a < b)
+        self.assertTrue(a & b < a)
+        self.assertTrue(a & b < b)
+        self.assertTrue(a | b > a)
+        self.assertTrue(a | b > b)
+        self.assertTrue(a ^ b < a | b)
 
     def test_commutativity(self):
         a, b = self.a, self.b
@@ -1760,7 +1760,7 @@
             edge = vertex                       # Cuboctahedron vertices are edges in Cube
             self.assertEqual(len(edge), 2)      # Two cube vertices define an edge
             for cubevert in edge:
-                self.assert_(cubevert in g)
+                self.assertTrue(cubevert in g)
 
 
 #==============================================================================
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
index 5a546ec..60352a2 100644
--- a/Lib/test/test_shutil.py
+++ b/Lib/test/test_shutil.py
@@ -63,12 +63,12 @@
                 self.assertIs(func, os.listdir,
                               "func must be either os.remove or os.listdir")
                 self.assertEqual(arg, TESTFN)
-            self.failUnless(issubclass(exc[0], OSError))
+            self.assertTrue(issubclass(exc[0], OSError))
             self.errorState = 1
         else:
             self.assertEqual(func, os.rmdir)
             self.assertEqual(arg, TESTFN)
-            self.failUnless(issubclass(exc[0], OSError))
+            self.assertTrue(issubclass(exc[0], OSError))
             self.errorState = 2
 
     def test_rmtree_dont_delete_file(self):
@@ -158,9 +158,9 @@
             patterns = shutil.ignore_patterns('*.tmp', 'test_dir2')
             shutil.copytree(src_dir, dst_dir, ignore=patterns)
             # checking the result: some elements should not be copied
-            self.assert_(exists(join(dst_dir, 'test.txt')))
-            self.assert_(not exists(join(dst_dir, 'test.tmp')))
-            self.assert_(not exists(join(dst_dir, 'test_dir2')))
+            self.assertTrue(exists(join(dst_dir, 'test.txt')))
+            self.assertTrue(not exists(join(dst_dir, 'test.tmp')))
+            self.assertTrue(not exists(join(dst_dir, 'test_dir2')))
         finally:
             if os.path.exists(dst_dir):
                 shutil.rmtree(dst_dir)
@@ -168,9 +168,9 @@
             patterns = shutil.ignore_patterns('*.tmp', 'subdir*')
             shutil.copytree(src_dir, dst_dir, ignore=patterns)
             # checking the result: some elements should not be copied
-            self.assert_(not exists(join(dst_dir, 'test.tmp')))
-            self.assert_(not exists(join(dst_dir, 'test_dir2', 'subdir2')))
-            self.assert_(not exists(join(dst_dir, 'test_dir2', 'subdir')))
+            self.assertTrue(not exists(join(dst_dir, 'test.tmp')))
+            self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir2')))
+            self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir')))
         finally:
             if os.path.exists(dst_dir):
                 shutil.rmtree(dst_dir)
@@ -192,9 +192,9 @@
             shutil.copytree(src_dir, dst_dir, ignore=_filter)
 
             # checking the result: some elements should not be copied
-            self.assert_(not exists(join(dst_dir, 'test_dir2', 'subdir2',
+            self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir2',
                                     'test.py')))
-            self.assert_(not exists(join(dst_dir, 'test_dir2', 'subdir')))
+            self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir')))
 
         finally:
             if os.path.exists(dst_dir):
@@ -393,7 +393,7 @@
             for src, dst in [('srcdir', 'srcdir/dest')]:
                 src = os.path.join(TESTFN, src)
                 dst = os.path.join(TESTFN, dst)
-                self.assert_(shutil._destinsrc(src, dst),
+                self.assertTrue(shutil._destinsrc(src, dst),
                              msg='_destinsrc() wrongly concluded that '
                              'dst (%s) is not in src (%s)' % (dst, src))
         finally:
@@ -405,7 +405,7 @@
             for src, dst in [('srcdir', 'src/dest'), ('srcdir', 'srcdir.new')]:
                 src = os.path.join(TESTFN, src)
                 dst = os.path.join(TESTFN, dst)
-                self.failIf(shutil._destinsrc(src, dst),
+                self.assertFalse(shutil._destinsrc(src, dst),
                             msg='_destinsrc() wrongly concluded that '
                             'dst (%s) is in src (%s)' % (dst, src))
         finally:
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index ef19641..5fc4220 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -217,10 +217,10 @@
         # before select is called
         time.sleep(self.TIMEOUT_FULL)
         mid_time = time.time()
-        self.assert_(mid_time - before_time < self.TIMEOUT_HALF)
+        self.assertTrue(mid_time - before_time < self.TIMEOUT_HALF)
         select.select([self.read], [], [], self.TIMEOUT_FULL)
         after_time = time.time()
-        self.assert_(after_time - mid_time < self.TIMEOUT_HALF)
+        self.assertTrue(after_time - mid_time < self.TIMEOUT_HALF)
 
     def test_wakeup_fd_during(self):
         import select
@@ -231,7 +231,7 @@
         self.assertRaises(select.error, select.select,
             [self.read], [], [], self.TIMEOUT_FULL)
         after_time = time.time()
-        self.assert_(after_time - before_time < self.TIMEOUT_HALF)
+        self.assertTrue(after_time - before_time < self.TIMEOUT_HALF)
 
     def setUp(self):
         import fcntl
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 8d101b3..7ed0ee2 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -47,26 +47,26 @@
         path_parts = ("Beginning", "End")
         original_dir = os.path.join(*path_parts)
         abs_dir, norm_dir = site.makepath(*path_parts)
-        self.failUnlessEqual(os.path.abspath(original_dir), abs_dir)
+        self.assertEqual(os.path.abspath(original_dir), abs_dir)
         if original_dir == os.path.normcase(original_dir):
-            self.failUnlessEqual(abs_dir, norm_dir)
+            self.assertEqual(abs_dir, norm_dir)
         else:
-            self.failUnlessEqual(os.path.normcase(abs_dir), norm_dir)
+            self.assertEqual(os.path.normcase(abs_dir), norm_dir)
 
     def test_init_pathinfo(self):
         dir_set = site._init_pathinfo()
         for entry in [site.makepath(path)[1] for path in sys.path
                         if path and os.path.isdir(path)]:
-            self.failUnless(entry in dir_set,
+            self.assertTrue(entry in dir_set,
                             "%s from sys.path not found in set returned "
                             "by _init_pathinfo(): %s" % (entry, dir_set))
 
     def pth_file_tests(self, pth_file):
         """Contain common code for testing results of reading a .pth file"""
-        self.failUnless(pth_file.imported in sys.modules,
+        self.assertTrue(pth_file.imported in sys.modules,
                 "%s not in sys.path" % pth_file.imported)
-        self.failUnless(site.makepath(pth_file.good_dir_path)[0] in sys.path)
-        self.failUnless(not os.path.exists(pth_file.bad_dir_path))
+        self.assertTrue(site.makepath(pth_file.good_dir_path)[0] in sys.path)
+        self.assertTrue(not os.path.exists(pth_file.bad_dir_path))
 
     def test_addpackage(self):
         # Make sure addpackage() imports if the line starts with 'import',
@@ -98,7 +98,7 @@
 
     def test_s_option(self):
         usersite = site.USER_SITE
-        self.assert_(usersite in sys.path)
+        self.assertTrue(usersite in sys.path)
 
         rc = subprocess.call([sys.executable, '-c',
             'import sys; sys.exit(%r in sys.path)' % usersite])
@@ -196,7 +196,7 @@
         site.abs__file__()
         for module in (sys, os, builtins):
             try:
-                self.failUnless(os.path.isabs(module.__file__), repr(module))
+                self.assertTrue(os.path.isabs(module.__file__), repr(module))
             except AttributeError:
                 continue
         # We could try everything in sys.modules; however, when regrtest.py
@@ -209,7 +209,7 @@
         site.removeduppaths()
         seen_paths = set()
         for path in sys.path:
-            self.failUnless(path not in seen_paths)
+            self.assertTrue(path not in seen_paths)
             seen_paths.add(path)
 
     def test_add_build_dir(self):
@@ -220,17 +220,17 @@
 
     def test_setting_quit(self):
         # 'quit' and 'exit' should be injected into builtins
-        self.failUnless(hasattr(builtins, "quit"))
-        self.failUnless(hasattr(builtins, "exit"))
+        self.assertTrue(hasattr(builtins, "quit"))
+        self.assertTrue(hasattr(builtins, "exit"))
 
     def test_setting_copyright(self):
         # 'copyright' and 'credits' should be in builtins
-        self.failUnless(hasattr(builtins, "copyright"))
-        self.failUnless(hasattr(builtins, "credits"))
+        self.assertTrue(hasattr(builtins, "copyright"))
+        self.assertTrue(hasattr(builtins, "credits"))
 
     def test_setting_help(self):
         # 'help' should be set in builtins
-        self.failUnless(hasattr(builtins, "help"))
+        self.assertTrue(hasattr(builtins, "help"))
 
     def test_aliasing_mbcs(self):
         if sys.platform == "win32":
@@ -244,7 +244,7 @@
 
     def test_setdefaultencoding_removed(self):
         # Make sure sys.setdefaultencoding is gone
-        self.failUnless(not hasattr(sys, "setdefaultencoding"))
+        self.assertTrue(not hasattr(sys, "setdefaultencoding"))
 
     def test_sitecustomize_executed(self):
         # If sitecustomize is available, it should have been imported.
diff --git a/Lib/test/test_slice.py b/Lib/test/test_slice.py
index 640c8c0..2ecb59a 100644
--- a/Lib/test/test_slice.py
+++ b/Lib/test/test_slice.py
@@ -73,7 +73,7 @@
 
         obj = AnyClass()
         s = slice(obj)
-        self.assert_(s.stop is obj)
+        self.assertTrue(s.stop is obj)
 
     def test_indices(self):
         self.assertEqual(slice(None           ).indices(10), (0, 10,  1))
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index e8a9fc4..8313006 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -224,7 +224,7 @@
 
     def test_repr(self):
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.assert_(repr(s).startswith("<socket.socket object"))
+        self.assertTrue(repr(s).startswith("<socket.socket object"))
 
     def test_weakref(self):
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -247,11 +247,11 @@
             raise socket.herror
         def raise_gaierror(*args, **kwargs):
             raise socket.gaierror
-        self.failUnlessRaises(socket.error, raise_error,
+        self.assertRaises(socket.error, raise_error,
                               "Error raising socket exception.")
-        self.failUnlessRaises(socket.error, raise_herror,
+        self.assertRaises(socket.error, raise_herror,
                               "Error raising socket exception.")
-        self.failUnlessRaises(socket.error, raise_gaierror,
+        self.assertRaises(socket.error, raise_gaierror,
                               "Error raising socket exception.")
 
     def testCrucialConstants(self):
@@ -273,7 +273,7 @@
         except socket.error:
             # Probably name lookup wasn't set up right; skip this test
             return
-        self.assert_(ip.find('.') >= 0, "Error resolving host to ip.")
+        self.assertTrue(ip.find('.') >= 0, "Error resolving host to ip.")
         try:
             hname, aliases, ipaddrs = socket.gethostbyaddr(ip)
         except socket.error:
@@ -501,7 +501,7 @@
         # it reasonable to get the host's addr in addition to 0.0.0.0.
         # At least for eCos.  This is required for the S/390 to pass.
         my_ip_addr = socket.gethostbyname(socket.gethostname())
-        self.assert_(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0])
+        self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0])
         self.assertEqual(name[1], port)
 
     def testGetSockOpt(self):
@@ -509,14 +509,14 @@
         # We know a socket should start without reuse==0
         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)
-        self.failIf(reuse != 0, "initial mode is reuse")
+        self.assertFalse(reuse != 0, "initial mode is reuse")
 
     def testSetSockOpt(self):
         # Testing setsockopt()
         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)
-        self.failIf(reuse == 0, "failed to set reuse mode")
+        self.assertFalse(reuse == 0, "failed to set reuse mode")
 
     def testSendAfterClose(self):
         # testing send() after close() with timeout
@@ -549,10 +549,10 @@
     def test_sock_ioctl(self):
         if os.name != "nt":
             return
-        self.assert_(hasattr(socket.socket, 'ioctl'))
-        self.assert_(hasattr(socket, 'SIO_RCVALL'))
-        self.assert_(hasattr(socket, 'RCVALL_ON'))
-        self.assert_(hasattr(socket, 'RCVALL_OFF'))
+        self.assertTrue(hasattr(socket.socket, 'ioctl'))
+        self.assertTrue(hasattr(socket, 'SIO_RCVALL'))
+        self.assertTrue(hasattr(socket, 'RCVALL_ON'))
+        self.assertTrue(hasattr(socket, 'RCVALL_OFF'))
 
 
 class BasicTCPTest(SocketConnectedTest):
@@ -724,7 +724,7 @@
         except socket.error:
             pass
         end = time.time()
-        self.assert_((end - start) < 1.0, "Error setting non-blocking mode.")
+        self.assertTrue((end - start) < 1.0, "Error setting non-blocking mode.")
 
     def _testSetBlocking(self):
         pass
@@ -801,7 +801,7 @@
 
     def tearDown(self):
         self.serv_file.close()
-        self.assert_(self.serv_file.closed)
+        self.assertTrue(self.serv_file.closed)
         self.serv_file = None
         SocketConnectedTest.tearDown(self)
 
@@ -811,7 +811,7 @@
 
     def clientTearDown(self):
         self.cli_file.close()
-        self.assert_(self.cli_file.closed)
+        self.assertTrue(self.cli_file.closed)
         self.cli_file = None
         SocketConnectedTest.clientTearDown(self)
 
@@ -879,10 +879,10 @@
         self.cli_file.flush()
 
     def testClosedAttr(self):
-        self.assert_(not self.serv_file.closed)
+        self.assertTrue(not self.serv_file.closed)
 
     def _testClosedAttr(self):
-        self.assert_(not self.cli_file.closed)
+        self.assertTrue(not self.cli_file.closed)
 
     def testAttributes(self):
         self.assertEqual(self.serv_file.mode, 'rb')
@@ -977,7 +977,7 @@
 
     def testWithoutServer(self):
         port = support.find_unused_port()
-        self.failUnlessRaises(
+        self.assertRaises(
             socket.error,
             lambda: socket.create_connection((HOST, port))
         )
@@ -1007,7 +1007,7 @@
     testTimeoutDefault = _justAccept
     def _testTimeoutDefault(self):
         # passing no explicit timeout uses socket's global default
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(42)
         try:
             self.cli = socket.create_connection((HOST, self.port))
@@ -1018,7 +1018,7 @@
     testTimeoutNone = _justAccept
     def _testTimeoutNone(self):
         # None timeout means the same as sock.settimeout(None)
-        self.assert_(socket.getdefaulttimeout() is None)
+        self.assertTrue(socket.getdefaulttimeout() is None)
         socket.setdefaulttimeout(30)
         try:
             self.cli = socket.create_connection((HOST, self.port), timeout=None)
@@ -1063,7 +1063,7 @@
 
     def _testOutsideTimeout(self):
         self.cli = sock = socket.create_connection((HOST, self.port), timeout=1)
-        self.failUnlessRaises(socket.timeout, lambda: sock.recv(5))
+        self.assertRaises(socket.timeout, lambda: sock.recv(5))
 
 
 class TCPTimeoutTest(SocketTCPTest):
@@ -1072,7 +1072,7 @@
         def raise_timeout(*args, **kwargs):
             self.serv.settimeout(1.0)
             self.serv.accept()
-        self.failUnlessRaises(socket.timeout, raise_timeout,
+        self.assertRaises(socket.timeout, raise_timeout,
                               "Error generating a timeout exception (TCP)")
 
     def testTimeoutZero(self):
@@ -1129,7 +1129,7 @@
         def raise_timeout(*args, **kwargs):
             self.serv.settimeout(1.0)
             self.serv.recv(1024)
-        self.failUnlessRaises(socket.timeout, raise_timeout,
+        self.assertRaises(socket.timeout, raise_timeout,
                               "Error generating a timeout exception (UDP)")
 
     def testTimeoutZero(self):
@@ -1149,10 +1149,10 @@
 class TestExceptions(unittest.TestCase):
 
     def testExceptionTree(self):
-        self.assert_(issubclass(socket.error, Exception))
-        self.assert_(issubclass(socket.herror, socket.error))
-        self.assert_(issubclass(socket.gaierror, socket.error))
-        self.assert_(issubclass(socket.timeout, socket.error))
+        self.assertTrue(issubclass(socket.error, Exception))
+        self.assertTrue(issubclass(socket.herror, socket.error))
+        self.assertTrue(issubclass(socket.gaierror, socket.error))
+        self.assertTrue(issubclass(socket.timeout, socket.error))
 
 class TestLinuxAbstractNamespace(unittest.TestCase):
 
diff --git a/Lib/test/test_stringprep.py b/Lib/test/test_stringprep.py
index f3d3327..aa71221 100644
--- a/Lib/test/test_stringprep.py
+++ b/Lib/test/test_stringprep.py
@@ -8,66 +8,66 @@
 
 class StringprepTests(unittest.TestCase):
     def test(self):
-        self.failUnless(in_table_a1("\u0221"))
-        self.failIf(in_table_a1("\u0222"))
+        self.assertTrue(in_table_a1("\u0221"))
+        self.assertFalse(in_table_a1("\u0222"))
 
-        self.failUnless(in_table_b1("\u00ad"))
-        self.failIf(in_table_b1("\u00ae"))
+        self.assertTrue(in_table_b1("\u00ad"))
+        self.assertFalse(in_table_b1("\u00ae"))
 
-        self.failUnless(map_table_b2("\u0041"), "\u0061")
-        self.failUnless(map_table_b2("\u0061"), "\u0061")
+        self.assertTrue(map_table_b2("\u0041"), "\u0061")
+        self.assertTrue(map_table_b2("\u0061"), "\u0061")
 
-        self.failUnless(map_table_b3("\u0041"), "\u0061")
-        self.failUnless(map_table_b3("\u0061"), "\u0061")
+        self.assertTrue(map_table_b3("\u0041"), "\u0061")
+        self.assertTrue(map_table_b3("\u0061"), "\u0061")
 
-        self.failUnless(in_table_c11("\u0020"))
-        self.failIf(in_table_c11("\u0021"))
+        self.assertTrue(in_table_c11("\u0020"))
+        self.assertFalse(in_table_c11("\u0021"))
 
-        self.failUnless(in_table_c12("\u00a0"))
-        self.failIf(in_table_c12("\u00a1"))
+        self.assertTrue(in_table_c12("\u00a0"))
+        self.assertFalse(in_table_c12("\u00a1"))
 
-        self.failUnless(in_table_c12("\u00a0"))
-        self.failIf(in_table_c12("\u00a1"))
+        self.assertTrue(in_table_c12("\u00a0"))
+        self.assertFalse(in_table_c12("\u00a1"))
 
-        self.failUnless(in_table_c11_c12("\u00a0"))
-        self.failIf(in_table_c11_c12("\u00a1"))
+        self.assertTrue(in_table_c11_c12("\u00a0"))
+        self.assertFalse(in_table_c11_c12("\u00a1"))
 
-        self.failUnless(in_table_c21("\u001f"))
-        self.failIf(in_table_c21("\u0020"))
+        self.assertTrue(in_table_c21("\u001f"))
+        self.assertFalse(in_table_c21("\u0020"))
 
-        self.failUnless(in_table_c22("\u009f"))
-        self.failIf(in_table_c22("\u00a0"))
+        self.assertTrue(in_table_c22("\u009f"))
+        self.assertFalse(in_table_c22("\u00a0"))
 
-        self.failUnless(in_table_c21_c22("\u009f"))
-        self.failIf(in_table_c21_c22("\u00a0"))
+        self.assertTrue(in_table_c21_c22("\u009f"))
+        self.assertFalse(in_table_c21_c22("\u00a0"))
 
-        self.failUnless(in_table_c3("\ue000"))
-        self.failIf(in_table_c3("\uf900"))
+        self.assertTrue(in_table_c3("\ue000"))
+        self.assertFalse(in_table_c3("\uf900"))
 
-        self.failUnless(in_table_c4("\uffff"))
-        self.failIf(in_table_c4("\u0000"))
+        self.assertTrue(in_table_c4("\uffff"))
+        self.assertFalse(in_table_c4("\u0000"))
 
-        self.failUnless(in_table_c5("\ud800"))
-        self.failIf(in_table_c5("\ud7ff"))
+        self.assertTrue(in_table_c5("\ud800"))
+        self.assertFalse(in_table_c5("\ud7ff"))
 
-        self.failUnless(in_table_c6("\ufff9"))
-        self.failIf(in_table_c6("\ufffe"))
+        self.assertTrue(in_table_c6("\ufff9"))
+        self.assertFalse(in_table_c6("\ufffe"))
 
-        self.failUnless(in_table_c7("\u2ff0"))
-        self.failIf(in_table_c7("\u2ffc"))
+        self.assertTrue(in_table_c7("\u2ff0"))
+        self.assertFalse(in_table_c7("\u2ffc"))
 
-        self.failUnless(in_table_c8("\u0340"))
-        self.failIf(in_table_c8("\u0342"))
+        self.assertTrue(in_table_c8("\u0340"))
+        self.assertFalse(in_table_c8("\u0342"))
 
         # C.9 is not in the bmp
-        # self.failUnless(in_table_c9(u"\U000E0001"))
-        # self.failIf(in_table_c8(u"\U000E0002"))
+        # self.assertTrue(in_table_c9(u"\U000E0001"))
+        # self.assertFalse(in_table_c8(u"\U000E0002"))
 
-        self.failUnless(in_table_d1("\u05be"))
-        self.failIf(in_table_d1("\u05bf"))
+        self.assertTrue(in_table_d1("\u05be"))
+        self.assertFalse(in_table_d1("\u05bf"))
 
-        self.failUnless(in_table_d2("\u0041"))
-        self.failIf(in_table_d2("\u0040"))
+        self.assertTrue(in_table_d2("\u0041"))
+        self.assertFalse(in_table_d2("\u0040"))
 
         # This would generate a hash of all predicates. However, running
         # it is quite expensive, and only serves to detect changes in the
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index 436a487..fb60ee4 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -13,7 +13,7 @@
 class getlang_Tests(unittest.TestCase):
     """Test _getlang"""
     def test_basic(self):
-        self.failUnlessEqual(_strptime._getlang(), locale.getlocale(locale.LC_TIME))
+        self.assertEqual(_strptime._getlang(), locale.getlocale(locale.LC_TIME))
 
 class LocaleTime_Tests(unittest.TestCase):
     """Tests for _strptime.LocaleTime.
@@ -36,9 +36,9 @@
         """
         strftime_output = time.strftime(directive, self.time_tuple).lower()
         comparison = testing[self.time_tuple[tuple_position]]
-        self.failUnless(strftime_output in testing, "%s: not found in tuple" %
+        self.assertTrue(strftime_output in testing, "%s: not found in tuple" %
                                                     error_msg)
-        self.failUnless(comparison == strftime_output,
+        self.assertTrue(comparison == strftime_output,
                         "%s: position within tuple incorrect; %s != %s" %
                         (error_msg, comparison, strftime_output))
 
@@ -61,18 +61,18 @@
     def test_am_pm(self):
         # Make sure AM/PM representation done properly
         strftime_output = time.strftime("%p", self.time_tuple).lower()
-        self.failUnless(strftime_output in self.LT_ins.am_pm,
+        self.assertTrue(strftime_output in self.LT_ins.am_pm,
                         "AM/PM representation not in tuple")
         if self.time_tuple[3] < 12: position = 0
         else: position = 1
-        self.failUnless(strftime_output == self.LT_ins.am_pm[position],
+        self.assertTrue(strftime_output == self.LT_ins.am_pm[position],
                         "AM/PM representation in the wrong position within the tuple")
 
     def test_timezone(self):
         # Make sure timezone is correct
         timezone = time.strftime("%Z", self.time_tuple).lower()
         if timezone:
-            self.failUnless(timezone in self.LT_ins.timezone[0] or \
+            self.assertTrue(timezone in self.LT_ins.timezone[0] or \
                             timezone in self.LT_ins.timezone[1],
                             "timezone %s not found in %s" %
                             (timezone, self.LT_ins.timezone))
@@ -86,26 +86,26 @@
         #  output.
         magic_date = (1999, 3, 17, 22, 44, 55, 2, 76, 0)
         strftime_output = time.strftime("%c", magic_date)
-        self.failUnless(strftime_output == time.strftime(self.LT_ins.LC_date_time,
+        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_date_time,
                                                          magic_date),
                         "LC_date_time incorrect")
         strftime_output = time.strftime("%x", magic_date)
-        self.failUnless(strftime_output == time.strftime(self.LT_ins.LC_date,
+        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_date,
                                                          magic_date),
                         "LC_date incorrect")
         strftime_output = time.strftime("%X", magic_date)
-        self.failUnless(strftime_output == time.strftime(self.LT_ins.LC_time,
+        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_time,
                                                          magic_date),
                         "LC_time incorrect")
         LT = _strptime.LocaleTime()
         LT.am_pm = ('', '')
-        self.failUnless(LT.LC_time, "LocaleTime's LC directives cannot handle "
+        self.assertTrue(LT.LC_time, "LocaleTime's LC directives cannot handle "
                                     "empty strings")
 
     def test_lang(self):
         # Make sure lang is set to what _getlang() returns
         # Assuming locale has not changed between now and when self.LT_ins was created
-        self.failUnlessEqual(self.LT_ins.lang, _strptime._getlang())
+        self.assertEqual(self.LT_ins.lang, _strptime._getlang())
 
 
 class TimeRETests(unittest.TestCase):
@@ -119,13 +119,13 @@
     def test_pattern(self):
         # Test TimeRE.pattern
         pattern_string = self.time_re.pattern(r"%a %A %d")
-        self.failUnless(pattern_string.find(self.locale_time.a_weekday[2]) != -1,
+        self.assertTrue(pattern_string.find(self.locale_time.a_weekday[2]) != -1,
                         "did not find abbreviated weekday in pattern string '%s'" %
                          pattern_string)
-        self.failUnless(pattern_string.find(self.locale_time.f_weekday[4]) != -1,
+        self.assertTrue(pattern_string.find(self.locale_time.f_weekday[4]) != -1,
                         "did not find full weekday in pattern string '%s'" %
                          pattern_string)
-        self.failUnless(pattern_string.find(self.time_re['d']) != -1,
+        self.assertTrue(pattern_string.find(self.time_re['d']) != -1,
                         "did not find 'd' directive pattern string '%s'" %
                          pattern_string)
 
@@ -133,23 +133,23 @@
         # Make sure any characters in the format string that might be taken as
         # regex syntax is escaped.
         pattern_string = self.time_re.pattern("\d+")
-        self.failUnless(r"\\d\+" in pattern_string,
+        self.assertTrue(r"\\d\+" in pattern_string,
                         "%s does not have re characters escaped properly" %
                         pattern_string)
 
     def test_compile(self):
         # Check that compiled regex is correct
         found = self.time_re.compile(r"%A").match(self.locale_time.f_weekday[6])
-        self.failUnless(found and found.group('A') == self.locale_time.f_weekday[6],
+        self.assertTrue(found and found.group('A') == self.locale_time.f_weekday[6],
                         "re object for '%A' failed")
         compiled = self.time_re.compile(r"%a %b")
         found = compiled.match("%s %s" % (self.locale_time.a_weekday[4],
                                self.locale_time.a_month[4]))
-        self.failUnless(found,
+        self.assertTrue(found,
             "Match failed with '%s' regex and '%s' string" %
              (compiled.pattern, "%s %s" % (self.locale_time.a_weekday[4],
                                            self.locale_time.a_month[4])))
-        self.failUnless(found.group('a') == self.locale_time.a_weekday[4] and
+        self.assertTrue(found.group('a') == self.locale_time.a_weekday[4] and
                          found.group('b') == self.locale_time.a_month[4],
                         "re object couldn't find the abbreviated weekday month in "
                          "'%s' using '%s'; group 'a' = '%s', group 'b' = %s'" %
@@ -159,7 +159,7 @@
                           'U','w','W','x','X','y','Y','Z','%'):
             compiled = self.time_re.compile("%" + directive)
             found = compiled.match(time.strftime("%" + directive))
-            self.failUnless(found, "Matching failed on '%s' using '%s' regex" %
+            self.assertTrue(found, "Matching failed on '%s' using '%s' regex" %
                                     (time.strftime("%" + directive),
                                      compiled.pattern))
 
@@ -168,14 +168,14 @@
         # Fixes bug #661354
         test_locale = _strptime.LocaleTime()
         test_locale.timezone = (frozenset(), frozenset())
-        self.failUnless(_strptime.TimeRE(test_locale).pattern("%Z") == '',
+        self.assertTrue(_strptime.TimeRE(test_locale).pattern("%Z") == '',
                         "with timezone == ('',''), TimeRE().pattern('%Z') != ''")
 
     def test_matching_with_escapes(self):
         # Make sure a format that requires escaping of characters works
         compiled_re = self.time_re.compile("\w+ %m")
         found = compiled_re.match("\w+ 10")
-        self.failUnless(found, "Escaping failed of format '\w+ 10'")
+        self.assertTrue(found, "Escaping failed of format '\w+ 10'")
 
     def test_locale_data_w_regex_metacharacters(self):
         # Check that if locale data contains regex metacharacters they are
@@ -186,7 +186,7 @@
                                             "Tokyo (standard time)")),
                                 frozenset("Tokyo (daylight time)"))
         time_re = _strptime.TimeRE(locale_time)
-        self.failUnless(time_re.compile("%Z").match("Tokyo (standard time)"),
+        self.assertTrue(time_re.compile("%Z").match("Tokyo (standard time)"),
                         "locale data that contains regex metacharacters is not"
                         " properly escaped")
 
@@ -195,8 +195,8 @@
         # so as to not allow to subpatterns to end up next to each other and
         # "steal" characters from each other.
         pattern = self.time_re.pattern('%j %H')
-        self.failUnless(not re.match(pattern, "180"))
-        self.failUnless(re.match(pattern, "18 0"))
+        self.assertTrue(not re.match(pattern, "180"))
+        self.assertTrue(re.match(pattern, "18 0"))
 
 
 class StrptimeTests(unittest.TestCase):
@@ -229,7 +229,7 @@
         """Helper fxn in testing."""
         strf_output = time.strftime("%" + directive, self.time_tuple)
         strp_output = _strptime._strptime_time(strf_output, "%" + directive)
-        self.failUnless(strp_output[position] == self.time_tuple[position],
+        self.assertTrue(strp_output[position] == self.time_tuple[position],
                         "testing of '%s' directive failed; '%s' -> %s != %s" %
                          (directive, strf_output, strp_output[position],
                           self.time_tuple[position]))
@@ -243,7 +243,7 @@
             for bound in bounds:
                 strp_output = _strptime._strptime_time(bound, '%y')
                 expected_result = century + int(bound)
-                self.failUnless(strp_output[0] == expected_result,
+                self.assertTrue(strp_output[0] == expected_result,
                                 "'y' test failed; passed in '%s' "
                                 "and returned '%s'" % (bound, strp_output[0]))
 
@@ -261,7 +261,7 @@
         self.helper('H', 3)
         strf_output = time.strftime("%I %p", self.time_tuple)
         strp_output = _strptime._strptime_time(strf_output, "%I %p")
-        self.failUnless(strp_output[3] == self.time_tuple[3],
+        self.assertTrue(strp_output[3] == self.time_tuple[3],
                         "testing of '%%I %%p' directive failed; '%s' -> %s != %s" %
                          (strf_output, strp_output[3], self.time_tuple[3]))
 
@@ -294,9 +294,9 @@
         # Check for equal timezone names deals with bad locale info when this
         # occurs; first found in FreeBSD 4.4.
         strp_output = _strptime._strptime_time("UTC", "%Z")
-        self.failUnlessEqual(strp_output.tm_isdst, 0)
+        self.assertEqual(strp_output.tm_isdst, 0)
         strp_output = _strptime._strptime_time("GMT", "%Z")
-        self.failUnlessEqual(strp_output.tm_isdst, 0)
+        self.assertEqual(strp_output.tm_isdst, 0)
         if sys.platform == "mac":
             # Timezones don't really work on MacOS9
             return
@@ -305,11 +305,11 @@
         strp_output = _strptime._strptime_time(strf_output, "%Z")
         locale_time = _strptime.LocaleTime()
         if time.tzname[0] != time.tzname[1] or not time.daylight:
-            self.failUnless(strp_output[8] == time_tuple[8],
+            self.assertTrue(strp_output[8] == time_tuple[8],
                             "timezone check failed; '%s' -> %s != %s" %
                              (strf_output, strp_output[8], time_tuple[8]))
         else:
-            self.failUnless(strp_output[8] == -1,
+            self.assertTrue(strp_output[8] == -1,
                             "LocaleTime().timezone has duplicate values and "
                              "time.daylight but timezone value not set to -1")
 
@@ -327,7 +327,7 @@
             time.tzname = (tz_name, tz_name)
             time.daylight = 1
             tz_value = _strptime._strptime_time(tz_name, "%Z")[8]
-            self.failUnlessEqual(tz_value, -1,
+            self.assertEqual(tz_value, -1,
                     "%s lead to a timezone value of %s instead of -1 when "
                     "time.daylight set to %s and passing in %s" %
                     (time.tzname, tz_value, time.daylight, tz_name))
@@ -354,25 +354,25 @@
         # Make sure % signs are handled properly
         strf_output = time.strftime("%m %% %Y", self.time_tuple)
         strp_output = _strptime._strptime_time(strf_output, "%m %% %Y")
-        self.failUnless(strp_output[0] == self.time_tuple[0] and
+        self.assertTrue(strp_output[0] == self.time_tuple[0] and
                          strp_output[1] == self.time_tuple[1],
                         "handling of percent sign failed")
 
     def test_caseinsensitive(self):
         # Should handle names case-insensitively.
         strf_output = time.strftime("%B", self.time_tuple)
-        self.failUnless(_strptime._strptime_time(strf_output.upper(), "%B"),
+        self.assertTrue(_strptime._strptime_time(strf_output.upper(), "%B"),
                         "strptime does not handle ALL-CAPS names properly")
-        self.failUnless(_strptime._strptime_time(strf_output.lower(), "%B"),
+        self.assertTrue(_strptime._strptime_time(strf_output.lower(), "%B"),
                         "strptime does not handle lowercase names properly")
-        self.failUnless(_strptime._strptime_time(strf_output.capitalize(), "%B"),
+        self.assertTrue(_strptime._strptime_time(strf_output.capitalize(), "%B"),
                         "strptime does not handle capword names properly")
 
     def test_defaults(self):
         # Default return value should be (1900, 1, 1, 0, 0, 0, 0, 1, 0)
         defaults = (1900, 1, 1, 0, 0, 0, 0, 1, -1)
         strp_output = _strptime._strptime_time('1', '%m')
-        self.failUnless(strp_output == defaults,
+        self.assertTrue(strp_output == defaults,
                         "Default values for strptime() are incorrect;"
                         " %s != %s" % (strp_output, defaults))
 
@@ -383,7 +383,7 @@
         # escaped.
         # Test instigated by bug #796149 .
         need_escaping = ".^$*+?{}\[]|)("
-        self.failUnless(_strptime._strptime_time(need_escaping, need_escaping))
+        self.assertTrue(_strptime._strptime_time(need_escaping, need_escaping))
 
 class Strptime12AMPMTests(unittest.TestCase):
     """Test a _strptime regression in '%I %p' at 12 noon (12 PM)"""
@@ -416,7 +416,7 @@
         format_string = "%Y %m %d %H %M %S %w %Z"
         result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
                                     format_string)
-        self.failUnless(result.tm_yday == self.time_tuple.tm_yday,
+        self.assertTrue(result.tm_yday == self.time_tuple.tm_yday,
                         "Calculation of tm_yday failed; %s != %s" %
                          (result.tm_yday, self.time_tuple.tm_yday))
 
@@ -425,7 +425,7 @@
         format_string = "%Y %H %M %S %w %j %Z"
         result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
                                     format_string)
-        self.failUnless(result.tm_year == self.time_tuple.tm_year and
+        self.assertTrue(result.tm_year == self.time_tuple.tm_year and
                          result.tm_mon == self.time_tuple.tm_mon and
                          result.tm_mday == self.time_tuple.tm_mday,
                         "Calculation of Gregorian date failed;"
@@ -439,7 +439,7 @@
         format_string = "%Y %m %d %H %S %j %Z"
         result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
                                     format_string)
-        self.failUnless(result.tm_wday == self.time_tuple.tm_wday,
+        self.assertTrue(result.tm_wday == self.time_tuple.tm_wday,
                         "Calculation of day of the week failed;"
                          "%s != %s" % (result.tm_wday, self.time_tuple.tm_wday))
 
@@ -452,7 +452,7 @@
                 dt_date = datetime_date(*ymd_tuple)
                 strp_input = dt_date.strftime(format_string)
                 strp_output = _strptime._strptime_time(strp_input, format_string)
-                self.failUnless(strp_output[:3] == ymd_tuple,
+                self.assertTrue(strp_output[:3] == ymd_tuple,
                         "%s(%s) test failed w/ '%s': %s != %s (%s != %s)" %
                             (test_reason, directive, strp_input,
                                 strp_output[:3], ymd_tuple,
@@ -495,8 +495,8 @@
         _strptime._TimeRE_cache.locale_time.lang = "Ni"
         original_time_re = id(_strptime._TimeRE_cache)
         _strptime._strptime_time("10", "%d")
-        self.failIfEqual(original_time_re, id(_strptime._TimeRE_cache))
-        self.failUnlessEqual(len(_strptime._regex_cache), 1)
+        self.assertNotEqual(original_time_re, id(_strptime._TimeRE_cache))
+        self.assertEqual(len(_strptime._regex_cache), 1)
 
     def test_regex_cleanup(self):
         # Make sure cached regexes are discarded when cache becomes "full".
@@ -509,7 +509,7 @@
             _strptime._regex_cache[bogus_key] = None
             bogus_key += 1
         _strptime._strptime_time("10", "%d")
-        self.failUnlessEqual(len(_strptime._regex_cache), 1)
+        self.assertEqual(len(_strptime._regex_cache), 1)
 
     def test_new_localetime(self):
         # A new LocaleTime instance should be created when a new TimeRE object
@@ -517,7 +517,7 @@
         locale_time_id = id(_strptime._TimeRE_cache.locale_time)
         _strptime._TimeRE_cache.locale_time.lang = "Ni"
         _strptime._strptime_time("10", "%d")
-        self.failIfEqual(locale_time_id,
+        self.assertNotEqual(locale_time_id,
                          id(_strptime._TimeRE_cache.locale_time))
 
     def test_TimeRE_recreation(self):
@@ -538,7 +538,7 @@
                 # Get the new cache object's id.
                 second_time_re_id = id(_strptime._TimeRE_cache)
                 # They should not be equal.
-                self.failIfEqual(first_time_re_id, second_time_re_id)
+                self.assertNotEqual(first_time_re_id, second_time_re_id)
             # Possible test locale is not supported while initial locale is.
             # If this is the case just suppress the exception and fall-through
             # to the reseting to the original locale.
diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 46e777b..39f6daf 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -126,7 +126,7 @@
                     # encoding of the string when packed.
                     arg = bytes(arg, 'latin1')
                 if rev != arg:
-                    self.assert_(asy)
+                    self.assertTrue(asy)
 
     def test_native_qQ(self):
         # can't pack -1 as unsigned regardless
@@ -192,7 +192,7 @@
                     expected = x
                     if x < 0:
                         expected += 1 << self.bitsize
-                        self.assert_(expected > 0)
+                        self.assertTrue(expected > 0)
                     expected = hex(expected)[2:] # chop "0x"
                     if len(expected) & 1:
                         expected = "0" + expected
diff --git a/Lib/test/test_structseq.py b/Lib/test/test_structseq.py
index 124acff..7adca53 100644
--- a/Lib/test/test_structseq.py
+++ b/Lib/test/test_structseq.py
@@ -28,7 +28,7 @@
 
     def test_repr(self):
         t = time.gmtime()
-        self.assert_(repr(t))
+        self.assertTrue(repr(t))
         t = time.gmtime(0)
         self.assertEqual(repr(t),
             "time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, "
@@ -50,8 +50,8 @@
     def test_contains(self):
         t1 = time.gmtime()
         for item in t1:
-            self.assert_(item in t1)
-        self.assert_(-42 not in t1)
+            self.assertTrue(item in t1)
+        self.assertTrue(-42 not in t1)
 
     def test_hash(self):
         t1 = time.gmtime()
@@ -61,11 +61,11 @@
         t1 = time.gmtime()
         t2 = type(t1)(t1)
         self.assertEqual(t1, t2)
-        self.assert_(not (t1 < t2))
-        self.assert_(t1 <= t2)
-        self.assert_(not (t1 > t2))
-        self.assert_(t1 >= t2)
-        self.assert_(not (t1 != t2))
+        self.assertTrue(not (t1 < t2))
+        self.assertTrue(t1 <= t2)
+        self.assertTrue(not (t1 > t2))
+        self.assertTrue(t1 >= t2)
+        self.assertTrue(not (t1 != t2))
 
     def test_fields(self):
         t = time.gmtime()
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 66aebfc..326c996 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -491,7 +491,7 @@
         # but, based on system scheduling we can't control, it's possible
         # poll() never returned None.  It "should be" very rare that it
         # didn't go around at least twice.
-        self.assert_(count >= 2)
+        self.assertTrue(count >= 2)
         # Subsequent invocations should just return the returncode
         self.assertEqual(p.poll(), 0)
 
@@ -657,7 +657,7 @@
             p = subprocess.Popen([sys.executable,
                               "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.send_signal(signal.SIGINT)
             self.assertNotEqual(p.wait(), 0)
 
@@ -665,7 +665,7 @@
             p = subprocess.Popen([sys.executable,
                             "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.kill()
             self.assertEqual(p.wait(), -signal.SIGKILL)
 
@@ -673,7 +673,7 @@
             p = subprocess.Popen([sys.executable,
                             "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.terminate()
             self.assertEqual(p.wait(), -signal.SIGTERM)
 
@@ -751,7 +751,7 @@
             p = subprocess.Popen([sys.executable,
                               "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.send_signal(signal.SIGTERM)
             self.assertNotEqual(p.wait(), 0)
 
@@ -759,7 +759,7 @@
             p = subprocess.Popen([sys.executable,
                             "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.kill()
             self.assertNotEqual(p.wait(), 0)
 
@@ -767,7 +767,7 @@
             p = subprocess.Popen([sys.executable,
                             "-c", "input()"])
 
-            self.assert_(p.poll() is None, p.poll())
+            self.assertTrue(p.poll() is None, p.poll())
             p.terminate()
             self.assertNotEqual(p.wait(), 0)
 
diff --git a/Lib/test/test_symtable.py b/Lib/test/test_symtable.py
index 45b7be8..3e62d96 100644
--- a/Lib/test/test_symtable.py
+++ b/Lib/test/test_symtable.py
@@ -122,7 +122,7 @@
         self.assertTrue(self.top.lookup("namespace_test").is_namespace())
         self.assertFalse(self.spam.lookup("x").is_namespace())
 
-        self.assert_(self.top.lookup("spam").get_namespace() is self.spam)
+        self.assertTrue(self.top.lookup("spam").get_namespace() is self.spam)
         ns_test = self.top.lookup("namespace_test")
         self.assertEqual(len(ns_test.get_namespaces()), 2)
         self.assertRaises(ValueError, ns_test.get_namespace)
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 8f68cf7..cac90f4 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -30,7 +30,7 @@
 
         dh(None)
         self.assertEqual(out.getvalue(), "")
-        self.assert_(not hasattr(builtins, "_"))
+        self.assertTrue(not hasattr(builtins, "_"))
         dh(42)
         self.assertEqual(out.getvalue(), "42\n")
         self.assertEqual(builtins._, 42)
@@ -62,12 +62,12 @@
         except ValueError as exc:
             eh(*sys.exc_info())
 
-        self.assert_(err.getvalue().endswith("ValueError: 42\n"))
+        self.assertTrue(err.getvalue().endswith("ValueError: 42\n"))
 
     def test_excepthook(self):
         with test.support.captured_output("stderr") as stderr:
             sys.excepthook(1, '1', 1)
-        self.assert_("TypeError: print_exception(): Exception expected for " \
+        self.assertTrue("TypeError: print_exception(): Exception expected for " \
                          "value, str found" in stderr.getvalue())
 
     # FIXME: testing the code for a lost or replaced excepthook in
@@ -136,7 +136,7 @@
     def test_getdefaultencoding(self):
         self.assertRaises(TypeError, sys.getdefaultencoding, 42)
         # can't check more than the type, as the user might have changed it
-        self.assert_(isinstance(sys.getdefaultencoding(), str))
+        self.assertTrue(isinstance(sys.getdefaultencoding(), str))
 
     # testing sys.settrace() is done in test_trace.py
     # testing sys.setprofile() is done in test_profile.py
@@ -203,20 +203,20 @@
     def test_getwindowsversion(self):
         if hasattr(sys, "getwindowsversion"):
             v = sys.getwindowsversion()
-            self.assert_(isinstance(v, tuple))
+            self.assertTrue(isinstance(v, tuple))
             self.assertEqual(len(v), 5)
-            self.assert_(isinstance(v[0], int))
-            self.assert_(isinstance(v[1], int))
-            self.assert_(isinstance(v[2], int))
-            self.assert_(isinstance(v[3], int))
-            self.assert_(isinstance(v[4], str))
+            self.assertTrue(isinstance(v[0], int))
+            self.assertTrue(isinstance(v[1], int))
+            self.assertTrue(isinstance(v[2], int))
+            self.assertTrue(isinstance(v[3], int))
+            self.assertTrue(isinstance(v[4], str))
 
     def test_call_tracing(self):
         self.assertRaises(TypeError, sys.call_tracing, type, 2)
 
     def test_dlopenflags(self):
         if hasattr(sys, "setdlopenflags"):
-            self.assert_(hasattr(sys, "getdlopenflags"))
+            self.assertTrue(hasattr(sys, "getdlopenflags"))
             self.assertRaises(TypeError, sys.getdlopenflags, 42)
             oldflags = sys.getdlopenflags()
             self.assertRaises(TypeError, sys.setdlopenflags)
@@ -237,12 +237,12 @@
         del n
         self.assertEqual(sys.getrefcount(None), c)
         if hasattr(sys, "gettotalrefcount"):
-            self.assert_(isinstance(sys.gettotalrefcount(), int))
+            self.assertTrue(isinstance(sys.gettotalrefcount(), int))
 
     def test_getframe(self):
         self.assertRaises(TypeError, sys._getframe, 42, 42)
         self.assertRaises(ValueError, sys._getframe, 2000000000)
-        self.assert_(
+        self.assertTrue(
             SysModuleTest.test_getframe.__code__ \
             is sys._getframe().f_code
         )
@@ -293,12 +293,12 @@
         d = sys._current_frames()
 
         main_id = _thread.get_ident()
-        self.assert_(main_id in d)
-        self.assert_(thread_id in d)
+        self.assertTrue(main_id in d)
+        self.assertTrue(thread_id in d)
 
         # Verify that the captured main-thread frame is _this_ frame.
         frame = d.pop(main_id)
-        self.assert_(frame is sys._getframe())
+        self.assertTrue(frame is sys._getframe())
 
         # Verify that the captured thread frame is blocked in g456, called
         # from f123.  This is a litte tricky, since various bits of
@@ -316,7 +316,7 @@
         # And the next record must be for g456().
         filename, lineno, funcname, sourceline = stack[i+1]
         self.assertEqual(funcname, "g456")
-        self.assert_(sourceline in ["leave_g.wait()", "entered_g.set()"])
+        self.assertTrue(sourceline in ["leave_g.wait()", "entered_g.set()"])
 
         # Reap the spawned thread.
         leave_g.set()
@@ -328,50 +328,50 @@
         # "thread id" 0.
         d = sys._current_frames()
         self.assertEqual(len(d), 1)
-        self.assert_(0 in d)
-        self.assert_(d[0] is sys._getframe())
+        self.assertTrue(0 in d)
+        self.assertTrue(d[0] is sys._getframe())
 
     def test_attributes(self):
-        self.assert_(isinstance(sys.api_version, int))
-        self.assert_(isinstance(sys.argv, list))
-        self.assert_(sys.byteorder in ("little", "big"))
-        self.assert_(isinstance(sys.builtin_module_names, tuple))
-        self.assert_(isinstance(sys.copyright, str))
-        self.assert_(isinstance(sys.exec_prefix, str))
-        self.assert_(isinstance(sys.executable, str))
+        self.assertTrue(isinstance(sys.api_version, int))
+        self.assertTrue(isinstance(sys.argv, list))
+        self.assertTrue(sys.byteorder in ("little", "big"))
+        self.assertTrue(isinstance(sys.builtin_module_names, tuple))
+        self.assertTrue(isinstance(sys.copyright, str))
+        self.assertTrue(isinstance(sys.exec_prefix, str))
+        self.assertTrue(isinstance(sys.executable, str))
         self.assertEqual(len(sys.float_info), 11)
         self.assertEqual(sys.float_info.radix, 2)
         self.assertEqual(len(sys.int_info), 2)
-        self.assert_(sys.int_info.bits_per_digit % 5 == 0)
-        self.assert_(sys.int_info.sizeof_digit >= 1)
+        self.assertTrue(sys.int_info.bits_per_digit % 5 == 0)
+        self.assertTrue(sys.int_info.sizeof_digit >= 1)
         self.assertEqual(type(sys.int_info.bits_per_digit), int)
         self.assertEqual(type(sys.int_info.sizeof_digit), int)
-        self.assert_(isinstance(sys.hexversion, int))
-        self.assert_(isinstance(sys.maxsize, int))
-        self.assert_(isinstance(sys.maxunicode, int))
-        self.assert_(isinstance(sys.platform, str))
-        self.assert_(isinstance(sys.prefix, str))
-        self.assert_(isinstance(sys.version, str))
+        self.assertTrue(isinstance(sys.hexversion, int))
+        self.assertTrue(isinstance(sys.maxsize, int))
+        self.assertTrue(isinstance(sys.maxunicode, int))
+        self.assertTrue(isinstance(sys.platform, str))
+        self.assertTrue(isinstance(sys.prefix, str))
+        self.assertTrue(isinstance(sys.version, str))
         vi = sys.version_info
-        self.assert_(isinstance(vi[:], tuple))
+        self.assertTrue(isinstance(vi[:], tuple))
         self.assertEqual(len(vi), 5)
-        self.assert_(isinstance(vi[0], int))
-        self.assert_(isinstance(vi[1], int))
-        self.assert_(isinstance(vi[2], int))
-        self.assert_(vi[3] in ("alpha", "beta", "candidate", "final"))
-        self.assert_(isinstance(vi[4], int))
-        self.assert_(isinstance(vi.major, int))
-        self.assert_(isinstance(vi.minor, int))
-        self.assert_(isinstance(vi.micro, int))
-        self.assert_(vi.releaselevel in
+        self.assertTrue(isinstance(vi[0], int))
+        self.assertTrue(isinstance(vi[1], int))
+        self.assertTrue(isinstance(vi[2], int))
+        self.assertTrue(vi[3] in ("alpha", "beta", "candidate", "final"))
+        self.assertTrue(isinstance(vi[4], int))
+        self.assertTrue(isinstance(vi.major, int))
+        self.assertTrue(isinstance(vi.minor, int))
+        self.assertTrue(isinstance(vi.micro, int))
+        self.assertTrue(vi.releaselevel in
                      ("alpha", "beta", "candidate", "final"))
-        self.assert_(isinstance(vi.serial, int))
+        self.assertTrue(isinstance(vi.serial, int))
         self.assertEqual(vi[0], vi.major)
         self.assertEqual(vi[1], vi.minor)
         self.assertEqual(vi[2], vi.micro)
         self.assertEqual(vi[3], vi.releaselevel)
         self.assertEqual(vi[4], vi.serial)
-        self.assert_(vi > (1,0,0))
+        self.assertTrue(vi > (1,0,0))
 
     def test_43581(self):
         # Can't use sys.stdout, as this is a StringIO object when
@@ -381,9 +381,9 @@
     def test_intern(self):
         self.assertRaises(TypeError, sys.intern)
         s = "never interned before"
-        self.assert_(sys.intern(s) is s)
+        self.assertTrue(sys.intern(s) is s)
         s2 = s.swapcase().swapcase()
-        self.assert_(sys.intern(s2) is s)
+        self.assertTrue(sys.intern(s2) is s)
 
         # Subclasses of string can't be interned, because they
         # provide too much opportunity for insane things to happen.
@@ -398,15 +398,15 @@
 
 
     def test_sys_flags(self):
-        self.failUnless(sys.flags)
+        self.assertTrue(sys.flags)
         attrs = ("debug", "division_warning",
                  "inspect", "interactive", "optimize", "dont_write_bytecode",
                  "no_user_site", "no_site", "ignore_environment", "verbose",
                  "bytes_warning")
         for attr in attrs:
-            self.assert_(hasattr(sys.flags, attr), attr)
+            self.assertTrue(hasattr(sys.flags, attr), attr)
             self.assertEqual(type(getattr(sys.flags, attr)), int, attr)
-        self.assert_(repr(sys.flags))
+        self.assertTrue(repr(sys.flags))
         self.assertEqual(len(sys.flags), len(attrs))
 
     def test_clear_type_cache(self):
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index f4c0035..76390c7 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -57,7 +57,7 @@
         tarinfo = self.tar.getmember("ustar/regtype")
         fobj = self.tar.extractfile(tarinfo)
         data = fobj.read()
-        self.assert_((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
+        self.assertTrue((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
                 "regular file extraction failed")
 
     def test_fileobj_readlines(self):
@@ -68,11 +68,11 @@
 
         lines1 = fobj1.readlines()
         lines2 = fobj2.readlines()
-        self.assert_(lines1 == lines2,
+        self.assertTrue(lines1 == lines2,
                 "fileobj.readlines() failed")
-        self.assert_(len(lines2) == 114,
+        self.assertTrue(len(lines2) == 114,
                 "fileobj.readlines() failed")
-        self.assert_(lines2[83] == \
+        self.assertTrue(lines2[83] == \
                 "I will gladly admit that Python is not the fastest running scripting language.\n",
                 "fileobj.readlines() failed")
 
@@ -83,7 +83,7 @@
         fobj2 = self.tar.extractfile(tarinfo)
         lines1 = fobj1.readlines()
         lines2 = list(io.TextIOWrapper(fobj2))
-        self.assert_(lines1 == lines2,
+        self.assertTrue(lines1 == lines2,
                      "fileobj.__iter__() failed")
 
     def test_fileobj_seek(self):
@@ -109,12 +109,12 @@
         self.assertEqual(2048, fobj.tell(),
                      "seek() to positive relative position failed")
         s = fobj.read(10)
-        self.assert_(s == data[2048:2058],
+        self.assertTrue(s == data[2048:2058],
                      "read() after seek failed")
         fobj.seek(0, 2)
         self.assertEqual(tarinfo.size, fobj.tell(),
                      "seek() to file's end failed")
-        self.assert_(fobj.read() == b"",
+        self.assertTrue(fobj.read() == b"",
                      "read() at file's end did not return empty string")
         fobj.seek(-tarinfo.size, 2)
         self.assertEqual(0, fobj.tell(),
@@ -123,13 +123,13 @@
         s1 = fobj.readlines()
         fobj.seek(512)
         s2 = fobj.readlines()
-        self.assert_(s1 == s2,
+        self.assertTrue(s1 == s2,
                      "readlines() after seek failed")
         fobj.seek(0)
         self.assertEqual(len(fobj.readline()), fobj.tell(),
                      "tell() after readline() failed")
         fobj.seek(512)
-        self.assert_(len(fobj.readline()) + 512 == fobj.tell(),
+        self.assertTrue(len(fobj.readline()) + 512 == fobj.tell(),
                      "tell() after seek() and readline() failed")
         fobj.seek(0)
         line = fobj.readline()
@@ -204,7 +204,7 @@
         # Old V7 tars create directory members using an AREGTYPE
         # header with a "/" appended to the filename field.
         tarinfo = self.tar.getmember("misc/dirtype-old-v7")
-        self.assert_(tarinfo.type == tarfile.DIRTYPE,
+        self.assertTrue(tarinfo.type == tarfile.DIRTYPE,
                 "v7 dirtype failed")
 
     def test_xstar_type(self):
@@ -218,15 +218,15 @@
 
     def test_check_members(self):
         for tarinfo in self.tar:
-            self.assert_(int(tarinfo.mtime) == 0o7606136617,
+            self.assertTrue(int(tarinfo.mtime) == 0o7606136617,
                     "wrong mtime for %s" % tarinfo.name)
             if not tarinfo.name.startswith("ustar/"):
                 continue
-            self.assert_(tarinfo.uname == "tarfile",
+            self.assertTrue(tarinfo.uname == "tarfile",
                     "wrong uname for %s" % tarinfo.name)
 
     def test_find_members(self):
-        self.assert_(self.tar.getmembers()[-1].name == "misc/eof",
+        self.assertTrue(self.tar.getmembers()[-1].name == "misc/eof",
                 "could not find all members")
 
     def test_extract_hardlink(self):
@@ -275,7 +275,7 @@
         tarinfo = self.tar.next() # get "regtype" (can't use getmember)
         fobj = self.tar.extractfile(tarinfo)
         data = fobj.read()
-        self.assert_((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
+        self.assertTrue((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
                 "regular file extraction failed")
 
     def test_provoke_stream_error(self):
@@ -292,7 +292,7 @@
             t2 = tar2.next()
             if t1 is None:
                 break
-            self.assert_(t2 is not None, "stream.next() failed.")
+            self.assertTrue(t2 is not None, "stream.next() failed.")
 
             if t2.islnk() or t2.issym():
                 self.assertRaises(tarfile.StreamError, tar2.extractfile, t2)
@@ -302,7 +302,7 @@
             v2 = tar2.extractfile(t2)
             if v1 is None:
                 continue
-            self.assert_(v2 is not None, "stream.extractfile() failed")
+            self.assertTrue(v2 is not None, "stream.extractfile() failed")
             self.assertEqual(v1.read(), v2.read(), "stream extraction failed")
 
         tar1.close()
@@ -364,7 +364,7 @@
 
     def _test_member(self, tarinfo, chksum=None, **kwargs):
         if chksum is not None:
-            self.assert_(md5sum(self.tar.extractfile(tarinfo).read()) == chksum,
+            self.assertTrue(md5sum(self.tar.extractfile(tarinfo).read()) == chksum,
                     "wrong md5sum for %s" % tarinfo.name)
 
         kwargs["mtime"] = 0o7606136617
@@ -375,7 +375,7 @@
             kwargs["uname"] = "tarfile"
             kwargs["gname"] = "tarfile"
         for k, v in kwargs.items():
-            self.assert_(getattr(tarinfo, k) == v,
+            self.assertTrue(getattr(tarinfo, k) == v,
                     "wrong value in %s field of %s" % (k, tarinfo.name))
 
     def test_find_regtype(self):
@@ -424,7 +424,7 @@
 
     def test_find_ustar_longname(self):
         name = "ustar/" + "12345/" * 39 + "1234567/longname"
-        self.assert_(name in self.tar.getnames())
+        self.assertTrue(name in self.tar.getnames())
 
     def test_find_regtype_oldv7(self):
         tarinfo = self.tar.getmember("misc/regtype-old-v7")
@@ -445,7 +445,7 @@
             tarinfo = self.tar.getmember(longname)
         except KeyError:
             self.fail("longname not found")
-        self.assert_(tarinfo.type != tarfile.DIRTYPE, "read longname as dirtype")
+        self.assertTrue(tarinfo.type != tarfile.DIRTYPE, "read longname as dirtype")
 
     def test_read_longlink(self):
         longname = self.subdir + "/" + "123/" * 125 + "longname"
@@ -454,7 +454,7 @@
             tarinfo = self.tar.getmember(longlink)
         except KeyError:
             self.fail("longlink not found")
-        self.assert_(tarinfo.linkname == longname, "linkname wrong")
+        self.assertTrue(tarinfo.linkname == longname, "linkname wrong")
 
     def test_truncated_longname(self):
         longname = self.subdir + "/" + "123/" * 125 + "longname"
@@ -534,7 +534,7 @@
         tar = tarfile.open(fileobj=fobj, mode=self.mode)
         tar.addfile(tarfile.TarInfo("foo"))
         tar.close()
-        self.assert_(fobj.closed is False, "external fileobjs must never closed")
+        self.assertTrue(fobj.closed is False, "external fileobjs must never closed")
 
 
 class WriteTest(WriteTestBase):
@@ -553,7 +553,7 @@
         tar.close()
 
         tar = tarfile.open(tmpname)
-        self.assert_(tar.getnames()[0] == name,
+        self.assertTrue(tar.getnames()[0] == name,
                 "failed to store 100 char filename")
         tar.close()
 
@@ -566,7 +566,7 @@
         fobj.close()
         tar.add(path)
         tar.close()
-        self.assert_(os.path.getsize(tmpname) > 0,
+        self.assertTrue(os.path.getsize(tmpname) > 0,
                 "tarfile is empty")
 
     # The test_*_size tests test for bug #1167128.
@@ -627,16 +627,16 @@
         dstname = os.path.abspath(tmpname)
 
         tar = tarfile.open(tmpname, self.mode)
-        self.assert_(tar.name == dstname, "archive name must be absolute")
+        self.assertTrue(tar.name == dstname, "archive name must be absolute")
 
         tar.add(dstname)
-        self.assert_(tar.getnames() == [], "added the archive to itself")
+        self.assertTrue(tar.getnames() == [], "added the archive to itself")
 
         cwd = os.getcwd()
         os.chdir(TEMPDIR)
         tar.add(dstname)
         os.chdir(cwd)
-        self.assert_(tar.getnames() == [], "added the archive to itself")
+        self.assertTrue(tar.getnames() == [], "added the archive to itself")
 
     def test_exclude(self):
         tempdir = os.path.join(TEMPDIR, "exclude")
@@ -677,14 +677,14 @@
             dec = bz2.BZ2Decompressor()
             data = open(tmpname, "rb").read()
             data = dec.decompress(data)
-            self.assert_(len(dec.unused_data) == 0,
+            self.assertTrue(len(dec.unused_data) == 0,
                     "found trailing data")
         else:
             fobj = open(tmpname, "rb")
             data = fobj.read()
             fobj.close()
 
-        self.assert_(data.count(b"\0") == tarfile.RECORDSIZE,
+        self.assertTrue(data.count(b"\0") == tarfile.RECORDSIZE,
                          "incorrect zero padding")
 
 
@@ -724,14 +724,14 @@
 
         v1 = self._calc_size(name, link)
         v2 = tar.offset
-        self.assert_(v1 == v2, "GNU longname/longlink creation failed")
+        self.assertTrue(v1 == v2, "GNU longname/longlink creation failed")
 
         tar.close()
 
         tar = tarfile.open(tmpname)
         member = tar.next()
-        self.failIf(member is None, "unable to read longname member")
-        self.assert_(tarinfo.name == member.name and \
+        self.assertFalse(member is None, "unable to read longname member")
+        self.assertTrue(tarinfo.name == member.name and \
                      tarinfo.linkname == member.linkname, \
                      "unable to read longname member")
 
@@ -791,18 +791,18 @@
         # The same name will be added as a REGTYPE every
         # time regardless of st_nlink.
         tarinfo = self.tar.gettarinfo(self.foo)
-        self.assert_(tarinfo.type == tarfile.REGTYPE,
+        self.assertTrue(tarinfo.type == tarfile.REGTYPE,
                 "add file as regular failed")
 
     def test_add_hardlink(self):
         tarinfo = self.tar.gettarinfo(self.bar)
-        self.assert_(tarinfo.type == tarfile.LNKTYPE,
+        self.assertTrue(tarinfo.type == tarfile.LNKTYPE,
                 "add file as hardlink failed")
 
     def test_dereference_hardlink(self):
         self.tar.dereference = True
         tarinfo = self.tar.gettarinfo(self.bar)
-        self.assert_(tarinfo.type == tarfile.REGTYPE,
+        self.assertTrue(tarinfo.type == tarfile.REGTYPE,
                 "dereferencing hardlink failed")
 
 
@@ -822,10 +822,10 @@
         tar = tarfile.open(tmpname)
         if link:
             l = tar.getmembers()[0].linkname
-            self.assert_(link == l, "PAX longlink creation failed")
+            self.assertTrue(link == l, "PAX longlink creation failed")
         else:
             n = tar.getmembers()[0].name
-            self.assert_(name == n, "PAX longname creation failed")
+            self.assertTrue(name == n, "PAX longname creation failed")
 
     def test_pax_global_header(self):
         pax_headers = {
@@ -847,8 +847,8 @@
 
         # Test if all the fields are strings.
         for key, val in tar.pax_headers.items():
-            self.assert_(type(key) is not bytes)
-            self.assert_(type(val) is not bytes)
+            self.assertTrue(type(key) is not bytes)
+            self.assertTrue(type(val) is not bytes)
             if key in tarfile.PAX_NUMBER_FIELDS:
                 try:
                     tarfile.PAX_NUMBER_FIELDS[key](val)
@@ -916,10 +916,10 @@
     def test_unicode_argument(self):
         tar = tarfile.open(tarname, "r", encoding="iso8859-1", errors="strict")
         for t in tar:
-            self.assert_(type(t.name) is str)
-            self.assert_(type(t.linkname) is str)
-            self.assert_(type(t.uname) is str)
-            self.assert_(type(t.gname) is str)
+            self.assertTrue(type(t.name) is str)
+            self.assertTrue(type(t.linkname) is str)
+            self.assertTrue(type(t.uname) is str)
+            self.assertTrue(type(t.gname) is str)
         tar.close()
 
     def test_uname_unicode(self):
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index 69b2e6c..a1bafc2 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -59,7 +59,7 @@
                          "file '%s' does not end with '%s'" % (nbase, suf))
 
         nbase = nbase[len(pre):len(nbase)-len(suf)]
-        self.assert_(self.str_check.match(nbase),
+        self.assertTrue(self.str_check.match(nbase),
                      "random string '%s' does not match /^[a-zA-Z0-9_-]{6}$/"
                      % nbase)
 
@@ -88,7 +88,7 @@
         for key in dict:
             if key[0] != '_' and key not in expected:
                 unexp.append(key)
-        self.failUnless(len(unexp) == 0,
+        self.assertTrue(len(unexp) == 0,
                         "unexpected keys: %s" % unexp)
 
 test_classes.append(test_exports)
@@ -113,7 +113,7 @@
         for i in range(TEST_FILES):
             s = next(r)
             self.nameCheck(s, '', '', '')
-            self.failIf(s in dict)
+            self.assertFalse(s in dict)
             dict[s] = 1
 
     def supports_iter(self):
@@ -140,9 +140,9 @@
 
         cand = tempfile._candidate_tempdir_list()
 
-        self.failIf(len(cand) == 0)
+        self.assertFalse(len(cand) == 0)
         for c in cand:
-            self.assert_(isinstance(c, str),
+            self.assertTrue(isinstance(c, str),
                          "%s is not a string" % c)
 
     def test_wanted_dirs(self):
@@ -160,14 +160,14 @@
             for envname in 'TMPDIR', 'TEMP', 'TMP':
                 dirname = os.getenv(envname)
                 if not dirname: raise ValueError
-                self.assert_(dirname in cand)
+                self.assertTrue(dirname in cand)
 
             try:
                 dirname = os.getcwd()
             except (AttributeError, os.error):
                 dirname = os.curdir
 
-            self.assert_(dirname in cand)
+            self.assertTrue(dirname in cand)
 
             # Not practical to try to verify the presence of OS-specific
             # paths in this list.
@@ -184,14 +184,14 @@
     def test_retval(self):
         # _get_candidate_names returns a _RandomNameSequence object
         obj = tempfile._get_candidate_names()
-        self.assert_(isinstance(obj, tempfile._RandomNameSequence))
+        self.assertTrue(isinstance(obj, tempfile._RandomNameSequence))
 
     def test_same_thing(self):
         # _get_candidate_names always returns the same object
         a = tempfile._get_candidate_names()
         b = tempfile._get_candidate_names()
 
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
 test_classes.append(test__get_candidate_names)
 
@@ -300,9 +300,9 @@
             decorated = sys.executable
 
         retval = os.spawnl(os.P_WAIT, sys.executable, decorated, tester, v, fd)
-        self.failIf(retval < 0,
+        self.assertFalse(retval < 0,
                     "child process caught fatal signal %d" % -retval)
-        self.failIf(retval > 0, "child process reports failure %d"%retval)
+        self.assertFalse(retval > 0, "child process reports failure %d"%retval)
 
     def test_textmode(self):
         # _mkstemp_inner can create files in text mode
@@ -322,8 +322,8 @@
         # gettempprefix returns a nonempty prefix string
         p = tempfile.gettempprefix()
 
-        self.assert_(isinstance(p, str))
-        self.assert_(len(p) > 0)
+        self.assertTrue(isinstance(p, str))
+        self.assertTrue(len(p) > 0)
 
     def test_usable_template(self):
         # gettempprefix returns a usable prefix string
@@ -354,9 +354,9 @@
         # gettempdir returns a directory which exists
 
         dir = tempfile.gettempdir()
-        self.assert_(os.path.isabs(dir) or dir == os.curdir,
+        self.assertTrue(os.path.isabs(dir) or dir == os.curdir,
                      "%s is not an absolute path" % dir)
-        self.assert_(os.path.isdir(dir),
+        self.assertTrue(os.path.isdir(dir),
                      "%s is not a directory" % dir)
 
     def test_directory_writable(self):
@@ -377,7 +377,7 @@
         a = tempfile.gettempdir()
         b = tempfile.gettempdir()
 
-        self.assert_(a is b)
+        self.assertTrue(a is b)
 
 test_classes.append(test_gettempdir)
 
@@ -580,7 +580,7 @@
     def test_creates_named(self):
         # NamedTemporaryFile creates files with names
         f = tempfile.NamedTemporaryFile()
-        self.failUnless(os.path.exists(f.name),
+        self.assertTrue(os.path.exists(f.name),
                         "NamedTemporaryFile %s does not exist" % f.name)
 
     def test_del_on_close(self):
@@ -590,7 +590,7 @@
             f = tempfile.NamedTemporaryFile(dir=dir)
             f.write(b'blat')
             f.close()
-            self.failIf(os.path.exists(f.name),
+            self.assertFalse(os.path.exists(f.name),
                         "NamedTemporaryFile %s exists after close" % f.name)
         finally:
             os.rmdir(dir)
@@ -604,7 +604,7 @@
             tmp = f.name
             f.write(b'blat')
             f.close()
-            self.failUnless(os.path.exists(f.name),
+            self.assertTrue(os.path.exists(f.name),
                         "NamedTemporaryFile %s missing after close" % f.name)
         finally:
             if tmp is not None:
@@ -625,12 +625,12 @@
     def test_context_manager(self):
         # A NamedTemporaryFile can be used as a context manager
         with tempfile.NamedTemporaryFile() as f:
-            self.failUnless(os.path.exists(f.name))
-        self.failIf(os.path.exists(f.name))
+            self.assertTrue(os.path.exists(f.name))
+        self.assertFalse(os.path.exists(f.name))
         def use_closed():
             with f:
                 pass
-        self.failUnlessRaises(ValueError, use_closed)
+        self.assertRaises(ValueError, use_closed)
 
     # How to test the mode and bufsize parameters?
 
@@ -653,21 +653,21 @@
     def test_basic(self):
         # SpooledTemporaryFile can create files
         f = self.do_create()
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f = self.do_create(max_size=100, pre="a", suf=".txt")
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
 
     def test_del_on_close(self):
         # A SpooledTemporaryFile is deleted when closed
         dir = tempfile.mkdtemp()
         try:
             f = tempfile.SpooledTemporaryFile(max_size=10, dir=dir)
-            self.failIf(f._rolled)
+            self.assertFalse(f._rolled)
             f.write(b'blat ' * 5)
-            self.failUnless(f._rolled)
+            self.assertTrue(f._rolled)
             filename = f.name
             f.close()
-            self.failIf(isinstance(filename, str) and os.path.exists(filename),
+            self.assertFalse(isinstance(filename, str) and os.path.exists(filename),
                         "SpooledTemporaryFile %s exists after close" % filename)
         finally:
             os.rmdir(dir)
@@ -675,46 +675,46 @@
     def test_rewrite_small(self):
         # A SpooledTemporaryFile can be written to multiple within the max_size
         f = self.do_create(max_size=30)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         for i in range(5):
             f.seek(0, 0)
             f.write(b'x' * 20)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
 
     def test_write_sequential(self):
         # A SpooledTemporaryFile should hold exactly max_size bytes, and roll
         # over afterward
         f = self.do_create(max_size=30)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.write(b'x' * 20)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.write(b'x' * 10)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.write(b'x')
-        self.failUnless(f._rolled)
+        self.assertTrue(f._rolled)
 
     def test_sparse(self):
         # A SpooledTemporaryFile that is written late in the file will extend
         # when that occurs
         f = self.do_create(max_size=30)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.seek(100, 0)
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.write(b'x')
-        self.failUnless(f._rolled)
+        self.assertTrue(f._rolled)
 
     def test_fileno(self):
         # A SpooledTemporaryFile should roll over to a real file on fileno()
         f = self.do_create(max_size=30)
-        self.failIf(f._rolled)
-        self.failUnless(f.fileno() > 0)
-        self.failUnless(f._rolled)
+        self.assertFalse(f._rolled)
+        self.assertTrue(f.fileno() > 0)
+        self.assertTrue(f._rolled)
 
     def test_multiple_close_before_rollover(self):
         # A SpooledTemporaryFile can be closed many times without error
         f = tempfile.SpooledTemporaryFile()
         f.write(b'abc\n')
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
         f.close()
         try:
             f.close()
@@ -726,7 +726,7 @@
         # A SpooledTemporaryFile can be closed many times without error
         f = tempfile.SpooledTemporaryFile(max_size=1)
         f.write(b'abc\n')
-        self.failUnless(f._rolled)
+        self.assertTrue(f._rolled)
         f.close()
         try:
             f.close()
@@ -768,51 +768,51 @@
         f.write("\u039B\r\n")
         f.seek(0)
         self.assertEqual(f.read(), "\u039B\r\n")
-        self.failIf(f._rolled)
+        self.assertFalse(f._rolled)
 
         f.write("\u039B" * 20 + "\r\n")
         f.seek(0)
         self.assertEqual(f.read(), "\u039B\r\n" + ("\u039B" * 20) + "\r\n")
-        self.failUnless(f._rolled)
+        self.assertTrue(f._rolled)
 
     def test_context_manager_before_rollover(self):
         # A SpooledTemporaryFile can be used as a context manager
         with tempfile.SpooledTemporaryFile(max_size=1) as f:
-            self.failIf(f._rolled)
-            self.failIf(f.closed)
-        self.failUnless(f.closed)
+            self.assertFalse(f._rolled)
+            self.assertFalse(f.closed)
+        self.assertTrue(f.closed)
         def use_closed():
             with f:
                 pass
-        self.failUnlessRaises(ValueError, use_closed)
+        self.assertRaises(ValueError, use_closed)
 
     def test_context_manager_during_rollover(self):
         # A SpooledTemporaryFile can be used as a context manager
         with tempfile.SpooledTemporaryFile(max_size=1) as f:
-            self.failIf(f._rolled)
+            self.assertFalse(f._rolled)
             f.write(b'abc\n')
             f.flush()
-            self.failUnless(f._rolled)
-            self.failIf(f.closed)
-        self.failUnless(f.closed)
+            self.assertTrue(f._rolled)
+            self.assertFalse(f.closed)
+        self.assertTrue(f.closed)
         def use_closed():
             with f:
                 pass
-        self.failUnlessRaises(ValueError, use_closed)
+        self.assertRaises(ValueError, use_closed)
 
     def test_context_manager_after_rollover(self):
         # A SpooledTemporaryFile can be used as a context manager
         f = tempfile.SpooledTemporaryFile(max_size=1)
         f.write(b'abc\n')
         f.flush()
-        self.failUnless(f._rolled)
+        self.assertTrue(f._rolled)
         with f:
-            self.failIf(f.closed)
-        self.failUnless(f.closed)
+            self.assertFalse(f.closed)
+        self.assertTrue(f.closed)
         def use_closed():
             with f:
                 pass
-        self.failUnlessRaises(ValueError, use_closed)
+        self.assertRaises(ValueError, use_closed)
 
 
 test_classes.append(test_SpooledTemporaryFile)
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index eabd7f4..c7a2213 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -41,7 +41,7 @@
                 self.nrunning.inc()
                 if verbose:
                     print(self.nrunning.get(), 'tasks are running')
-                self.testcase.assert_(self.nrunning.get() <= 3)
+                self.testcase.assertTrue(self.nrunning.get() <= 3)
 
             time.sleep(delay)
             if verbose:
@@ -49,7 +49,7 @@
 
             with self.mutex:
                 self.nrunning.dec()
-                self.testcase.assert_(self.nrunning.get() >= 0)
+                self.testcase.assertTrue(self.nrunning.get() >= 0)
                 if verbose:
                     print('%s is finished. %d tasks are running' %
                           (self.name, self.nrunning.get()))
@@ -74,18 +74,18 @@
         for i in range(NUMTASKS):
             t = TestThread("<thread %d>"%i, self, sema, mutex, numrunning)
             threads.append(t)
-            self.failUnlessEqual(t.ident, None)
-            self.assert_(re.match('<TestThread\(.*, initial\)>', repr(t)))
+            self.assertEqual(t.ident, None)
+            self.assertTrue(re.match('<TestThread\(.*, initial\)>', repr(t)))
             t.start()
 
         if verbose:
             print('waiting for all tasks to complete')
         for t in threads:
             t.join(NUMTASKS)
-            self.assert_(not t.is_alive())
-            self.failIfEqual(t.ident, 0)
+            self.assertTrue(not t.is_alive())
+            self.assertNotEqual(t.ident, 0)
             self.assertFalse(t.ident is None)
-            self.assert_(re.match('<TestThread\(.*, \w+ -?\d+\)>', repr(t)))
+            self.assertTrue(re.match('<TestThread\(.*, \w+ -?\d+\)>', repr(t)))
         if verbose:
             print('all tasks done')
         self.assertEqual(numrunning.get(), 0)
@@ -143,8 +143,8 @@
         tid = _thread.start_new_thread(f, (mutex,))
         # Wait for the thread to finish.
         mutex.acquire()
-        self.assert_(tid in threading._active)
-        self.assert_(isinstance(threading._active[tid],
+        self.assertTrue(tid in threading._active)
+        self.assertTrue(isinstance(threading._active[tid],
                                 threading._DummyThread))
         del threading._active[tid]
 
@@ -204,7 +204,7 @@
         self.assertTrue(ret)
         if verbose:
             print("    verifying worker hasn't exited")
-        self.assert_(not t.finished)
+        self.assertTrue(not t.finished)
         if verbose:
             print("    attempting to raise asynch exception in worker")
         result = set_async_exc(ctypes.c_long(t.id), exception)
@@ -212,7 +212,7 @@
         if verbose:
             print("    waiting for worker to say it caught the exception")
         worker_saw_exception.wait(timeout=10)
-        self.assert_(t.finished)
+        self.assertTrue(t.finished)
         if verbose:
             print("    all OK -- joining worker")
         if t.finished:
@@ -283,8 +283,8 @@
 
             sys.settrace(func)
             """])
-        self.failIf(rc == 2, "interpreted was blocked")
-        self.failUnless(rc == 0, "Unexpected error")
+        self.assertFalse(rc == 2, "interpreted was blocked")
+        self.assertTrue(rc == 0, "Unexpected error")
 
 
     def test_enumerate_after_join(self):
@@ -371,8 +371,8 @@
         rc = p.wait()
         data = p.stdout.read().decode().replace('\r', '')
         self.assertEqual(data, "end of main\nend of thread\n")
-        self.failIf(rc == 2, "interpreter was blocked")
-        self.failUnless(rc == 0, "Unexpected error")
+        self.assertFalse(rc == 2, "interpreter was blocked")
+        self.assertTrue(rc == 0, "Unexpected error")
 
     def test_1_join_on_shutdown(self):
         # The usual case: on exit, wait for a non-daemon thread
diff --git a/Lib/test/test_threading_local.py b/Lib/test/test_threading_local.py
index 977a38a..7f58e04 100644
--- a/Lib/test/test_threading_local.py
+++ b/Lib/test/test_threading_local.py
@@ -40,7 +40,7 @@
         local.someothervar = None
         gc.collect()
         deadlist = [weak for weak in weaklist if weak() is None]
-        self.assert_(len(deadlist) in (n-1, n), (n, len(deadlist)))
+        self.assertTrue(len(deadlist) in (n-1, n), (n, len(deadlist)))
 
     def test_derived(self):
         # Issue 3088: if there is a threads switch inside the __init__
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 93d4d36..49a9d17 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -18,9 +18,9 @@
         time.clock()
 
     def test_conversions(self):
-        self.assert_(time.ctime(self.t)
+        self.assertTrue(time.ctime(self.t)
                      == time.asctime(time.localtime(self.t)))
-        self.assert_(int(time.mktime(time.localtime(self.t)))
+        self.assertTrue(int(time.mktime(time.localtime(self.t)))
                      == int(self.t))
 
     def test_sleep(self):
@@ -153,36 +153,36 @@
             time.tzset()
             environ['TZ'] = utc
             time.tzset()
-            self.failUnlessEqual(
+            self.assertEqual(
                 time.gmtime(xmas2002), time.localtime(xmas2002)
                 )
-            self.failUnlessEqual(time.daylight, 0)
-            self.failUnlessEqual(time.timezone, 0)
-            self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 0)
+            self.assertEqual(time.daylight, 0)
+            self.assertEqual(time.timezone, 0)
+            self.assertEqual(time.localtime(xmas2002).tm_isdst, 0)
 
             # Make sure we can switch to US/Eastern
             environ['TZ'] = eastern
             time.tzset()
-            self.failIfEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
-            self.failUnlessEqual(time.tzname, ('EST', 'EDT'))
-            self.failUnlessEqual(len(time.tzname), 2)
-            self.failUnlessEqual(time.daylight, 1)
-            self.failUnlessEqual(time.timezone, 18000)
-            self.failUnlessEqual(time.altzone, 14400)
-            self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 0)
-            self.failUnlessEqual(len(time.tzname), 2)
+            self.assertNotEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
+            self.assertEqual(time.tzname, ('EST', 'EDT'))
+            self.assertEqual(len(time.tzname), 2)
+            self.assertEqual(time.daylight, 1)
+            self.assertEqual(time.timezone, 18000)
+            self.assertEqual(time.altzone, 14400)
+            self.assertEqual(time.localtime(xmas2002).tm_isdst, 0)
+            self.assertEqual(len(time.tzname), 2)
 
             # Now go to the southern hemisphere.
             environ['TZ'] = victoria
             time.tzset()
-            self.failIfEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
-            self.failUnless(time.tzname[0] == 'AEST', str(time.tzname[0]))
-            self.failUnless(time.tzname[1] == 'AEDT', str(time.tzname[1]))
-            self.failUnlessEqual(len(time.tzname), 2)
-            self.failUnlessEqual(time.daylight, 1)
-            self.failUnlessEqual(time.timezone, -36000)
-            self.failUnlessEqual(time.altzone, -39600)
-            self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 1)
+            self.assertNotEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
+            self.assertTrue(time.tzname[0] == 'AEST', str(time.tzname[0]))
+            self.assertTrue(time.tzname[1] == 'AEDT', str(time.tzname[1]))
+            self.assertEqual(len(time.tzname), 2)
+            self.assertEqual(time.daylight, 1)
+            self.assertEqual(time.timezone, -36000)
+            self.assertEqual(time.altzone, -39600)
+            self.assertEqual(time.localtime(xmas2002).tm_isdst, 1)
 
         finally:
             # Repair TZ environment variable in case any other tests
@@ -214,14 +214,14 @@
         gt1 = time.gmtime(None)
         t0 = time.mktime(gt0)
         t1 = time.mktime(gt1)
-        self.assert_(0 <= (t1-t0) < 0.2)
+        self.assertTrue(0 <= (t1-t0) < 0.2)
 
     def test_localtime_without_arg(self):
         lt0 = time.localtime()
         lt1 = time.localtime(None)
         t0 = time.mktime(lt0)
         t1 = time.mktime(lt1)
-        self.assert_(0 <= (t1-t0) < 0.2)
+        self.assertTrue(0 <= (t1-t0) < 0.2)
 
 class TestLocale(unittest.TestCase):
     def setUp(self):
diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py
index 264704e..e8e2a6f 100644
--- a/Lib/test/test_timeout.py
+++ b/Lib/test/test_timeout.py
@@ -119,11 +119,11 @@
         self.sock.settimeout(_timeout)
 
         _t1 = time.time()
-        self.failUnlessRaises(socket.error, self.sock.connect, addr)
+        self.assertRaises(socket.error, self.sock.connect, addr)
         _t2 = time.time()
 
         _delta = abs(_t1 - _t2)
-        self.assert_(_delta < _timeout + self.fuzz,
+        self.assertTrue(_delta < _timeout + self.fuzz,
                      "timeout (%g) is more than %g seconds more than expected (%g)"
                      %(_delta, self.fuzz, _timeout))
 
@@ -134,11 +134,11 @@
         self.sock.settimeout(_timeout)
 
         _t1 = time.time()
-        self.failUnlessRaises(socket.error, self.sock.recv, 1024)
+        self.assertRaises(socket.error, self.sock.recv, 1024)
         _t2 = time.time()
 
         _delta = abs(_t1 - _t2)
-        self.assert_(_delta < _timeout + self.fuzz,
+        self.assertTrue(_delta < _timeout + self.fuzz,
                      "timeout (%g) is %g seconds more than expected (%g)"
                      %(_delta, self.fuzz, _timeout))
 
@@ -150,11 +150,11 @@
         self.sock.listen(5)
 
         _t1 = time.time()
-        self.failUnlessRaises(socket.error, self.sock.accept)
+        self.assertRaises(socket.error, self.sock.accept)
         _t2 = time.time()
 
         _delta = abs(_t1 - _t2)
-        self.assert_(_delta < _timeout + self.fuzz,
+        self.assertTrue(_delta < _timeout + self.fuzz,
                      "timeout (%g) is %g seconds more than expected (%g)"
                      %(_delta, self.fuzz, _timeout))
 
@@ -166,11 +166,11 @@
         self.sock.bind(self.addr_local)
 
         _t1 = time.time()
-        self.failUnlessRaises(socket.error, self.sock.recvfrom, 8192)
+        self.assertRaises(socket.error, self.sock.recvfrom, 8192)
         _t2 = time.time()
 
         _delta = abs(_t1 - _t2)
-        self.assert_(_delta < _timeout + self.fuzz,
+        self.assertTrue(_delta < _timeout + self.fuzz,
                      "timeout (%g) is %g seconds more than expected (%g)"
                      %(_delta, self.fuzz, _timeout))
 
diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py
index 75a7a80..f395ed4 100644
--- a/Lib/test/test_tokenize.py
+++ b/Lib/test/test_tokenize.py
@@ -629,7 +629,7 @@
         behaviour of the interpreter when it encounters a similar condition.
         """
         f = 'tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt'
-        self.failUnlessRaises(SyntaxError, self._testFile, f)
+        self.assertRaises(SyntaxError, self._testFile, f)
 
     def test_no_coding_cookie_and_utf8_bom(self):
         f = 'tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt'
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index 9033238..2145710 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -40,15 +40,15 @@
         err = self.get_exception_format(self.syntax_error_with_caret,
                                         SyntaxError)
         self.assertEqual(len(err), 4)
-        self.assert_(err[1].strip() == "return x!")
-        self.assert_("^" in err[2]) # third line has caret
+        self.assertTrue(err[1].strip() == "return x!")
+        self.assertTrue("^" in err[2]) # third line has caret
         self.assertEqual(err[1].find("!"), err[2].find("^")) # in the right place
 
         err = self.get_exception_format(self.syntax_error_with_caret_2,
                                         SyntaxError)
-        self.assert_("^" in err[2]) # third line has caret
-        self.assert_(err[2].count('\n') == 1) # and no additional newline
-        self.assert_(err[1].find("+") == err[2].find("^")) # in the right place
+        self.assertTrue("^" in err[2]) # third line has caret
+        self.assertTrue(err[2].count('\n') == 1) # and no additional newline
+        self.assertTrue(err[1].find("+") == err[2].find("^")) # in the right place
 
     def test_nocaret(self):
         if is_jython:
@@ -57,14 +57,14 @@
         err = self.get_exception_format(self.syntax_error_without_caret,
                                         SyntaxError)
         self.assertEqual(len(err), 3)
-        self.assert_(err[1].strip() == "[x for x in x] = x")
+        self.assertTrue(err[1].strip() == "[x for x in x] = x")
 
     def test_bad_indentation(self):
         err = self.get_exception_format(self.syntax_error_bad_indentation,
                                         IndentationError)
         self.assertEqual(len(err), 4)
         self.assertEqual(err[1].strip(), "print(2)")
-        self.assert_("^" in err[2])
+        self.assertTrue("^" in err[2])
         self.assertEqual(err[1].find(")"), err[2].find("^"))
 
     def test_base_exception(self):
@@ -131,13 +131,13 @@
             err_line = "raise RuntimeError('{0}')".format(message_ascii)
             err_msg = "RuntimeError: {0}".format(message_ascii)
 
-            self.assert_(("line %s" % lineno) in stdout[1],
+            self.assertTrue(("line %s" % lineno) in stdout[1],
                 "Invalid line number: {0!r} instead of {1}".format(
                     stdout[1], lineno))
-            self.assert_(stdout[2].endswith(err_line),
+            self.assertTrue(stdout[2].endswith(err_line),
                 "Invalid traceback line: {0!r} instead of {1!r}".format(
                     stdout[2], err_line))
-            self.assert_(stdout[3] == err_msg,
+            self.assertTrue(stdout[3] == err_msg,
                 "Invalid error message: {0!r} instead of {1!r}".format(
                     stdout[3], err_msg))
 
@@ -177,9 +177,9 @@
         tb_lines = python_fmt.splitlines()
         self.assertEquals(len(tb_lines), 3)
         banner, location, source_line = tb_lines
-        self.assert_(banner.startswith('Traceback'))
-        self.assert_(location.startswith('  File'))
-        self.assert_(source_line.startswith('    raise'))
+        self.assertTrue(banner.startswith('Traceback'))
+        self.assertTrue(location.startswith('  File'))
+        self.assertTrue(source_line.startswith('    raise'))
 
 
 cause_message = (
@@ -209,9 +209,9 @@
 
     def check_zero_div(self, msg):
         lines = msg.splitlines()
-        self.assert_(lines[-3].startswith('  File'))
-        self.assert_('1/0 # In zero_div' in lines[-2], lines[-2])
-        self.assert_(lines[-1].startswith('ZeroDivisionError'), lines[-1])
+        self.assertTrue(lines[-3].startswith('  File'))
+        self.assertTrue('1/0 # In zero_div' in lines[-2], lines[-2])
+        self.assertTrue(lines[-1].startswith('ZeroDivisionError'), lines[-1])
 
     def test_simple(self):
         try:
@@ -220,10 +220,10 @@
             e = _
         lines = self.get_report(e).splitlines()
         self.assertEquals(len(lines), 4)
-        self.assert_(lines[0].startswith('Traceback'))
-        self.assert_(lines[1].startswith('  File'))
-        self.assert_('1/0 # Marker' in lines[2])
-        self.assert_(lines[3].startswith('ZeroDivisionError'))
+        self.assertTrue(lines[0].startswith('Traceback'))
+        self.assertTrue(lines[1].startswith('  File'))
+        self.assertTrue('1/0 # Marker' in lines[2])
+        self.assertTrue(lines[3].startswith('ZeroDivisionError'))
 
     def test_cause(self):
         def inner_raise():
@@ -237,7 +237,7 @@
         self.assertEquals(len(blocks), 3)
         self.assertEquals(blocks[1], cause_message)
         self.check_zero_div(blocks[0])
-        self.assert_('inner_raise() # Marker' in blocks[2])
+        self.assertTrue('inner_raise() # Marker' in blocks[2])
 
     def test_context(self):
         def inner_raise():
@@ -251,7 +251,7 @@
         self.assertEquals(len(blocks), 3)
         self.assertEquals(blocks[1], context_message)
         self.check_zero_div(blocks[0])
-        self.assert_('inner_raise() # Marker' in blocks[2])
+        self.assertTrue('inner_raise() # Marker' in blocks[2])
 
     def test_cause_recursive(self):
         def inner_raise():
@@ -269,11 +269,11 @@
         self.assertEquals(len(blocks), 3)
         self.assertEquals(blocks[1], cause_message)
         # The first block is the KeyError raised from the ZeroDivisionError
-        self.assert_('raise KeyError from e' in blocks[0])
-        self.assert_('1/0' not in blocks[0])
+        self.assertTrue('raise KeyError from e' in blocks[0])
+        self.assertTrue('1/0' not in blocks[0])
         # The second block (apart from the boundary) is the ZeroDivisionError
         # re-raised from the KeyError
-        self.assert_('inner_raise() # Marker' in blocks[2])
+        self.assertTrue('inner_raise() # Marker' in blocks[2])
         self.check_zero_div(blocks[2])
 
 
diff --git a/Lib/test/test_tuple.py b/Lib/test/test_tuple.py
index f82af31..c37adc2 100644
--- a/Lib/test/test_tuple.py
+++ b/Lib/test/test_tuple.py
@@ -11,7 +11,7 @@
         self.assertEqual(tuple(), ())
         t0_3 = (0, 1, 2, 3)
         t0_3_bis = tuple(t0_3)
-        self.assert_(t0_3 is t0_3_bis)
+        self.assertTrue(t0_3 is t0_3_bis)
         self.assertEqual(tuple([]), ())
         self.assertEqual(tuple([0, 1, 2, 3]), (0, 1, 2, 3))
         self.assertEqual(tuple(''), ())
@@ -19,8 +19,8 @@
 
     def test_truth(self):
         super().test_truth()
-        self.assert_(not ())
-        self.assert_((42, ))
+        self.assertTrue(not ())
+        self.assertTrue((42, ))
 
     def test_len(self):
         super().test_len()
@@ -33,14 +33,14 @@
         u = (0, 1)
         u2 = u
         u += (2, 3)
-        self.assert_(u is not u2)
+        self.assertTrue(u is not u2)
 
     def test_imul(self):
         super().test_imul()
         u = (0, 1)
         u2 = u
         u *= 3
-        self.assert_(u is not u2)
+        self.assertTrue(u is not u2)
 
     def test_tupleresizebug(self):
         # Check that a specific bug in _PyTuple_Resize() is squashed.
@@ -71,7 +71,7 @@
         inps = base + [(i, j) for i in base for j in xp] + \
                      [(i, j) for i in xp for j in base] + xp + list(zip(base))
         collisions = len(inps) - len(set(map(hash, inps)))
-        self.assert_(collisions <= 15)
+        self.assertTrue(collisions <= 15)
 
     def test_repr(self):
         l0 = tuple()
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index b85d337..5f5a952 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -549,13 +549,13 @@
             result = f.__format__(fmt)
             self.assertEqual(len(result), 98)
             self.assertEqual(result[-7], '.')
-            self.assert_(result[:12] in ('112340000000', '112339999999'))
+            self.assertTrue(result[:12] in ('112340000000', '112339999999'))
         f = 1.1234e200
         for fmt in 'f', 'F':
             result = f.__format__(fmt)
             self.assertEqual(len(result), 208)
             self.assertEqual(result[-7], '.')
-            self.assert_(result[:12] in ('112340000000', '112339999999'))
+            self.assertTrue(result[:12] in ('112340000000', '112339999999'))
 
 
         test( 1.0, 'e', '1.000000e+00')
diff --git a/Lib/test/test_unary.py b/Lib/test/test_unary.py
index 7dd651e..b835564 100644
--- a/Lib/test/test_unary.py
+++ b/Lib/test/test_unary.py
@@ -6,12 +6,12 @@
 class UnaryOpTestCase(unittest.TestCase):
 
     def test_negative(self):
-        self.assert_(-2 == 0 - 2)
+        self.assertTrue(-2 == 0 - 2)
         self.assertEqual(-0, 0)
         self.assertEqual(--2, 2)
-        self.assert_(-2 == 0 - 2)
-        self.assert_(-2.0 == 0 - 2.0)
-        self.assert_(-2j == 0 - 2j)
+        self.assertTrue(-2 == 0 - 2)
+        self.assertTrue(-2.0 == 0 - 2.0)
+        self.assertTrue(-2j == 0 - 2j)
 
     def test_positive(self):
         self.assertEqual(+2, 2)
@@ -22,16 +22,16 @@
         self.assertEqual(+2j, 2j)
 
     def test_invert(self):
-        self.assert_(-2 == 0 - 2)
+        self.assertTrue(-2 == 0 - 2)
         self.assertEqual(-0, 0)
         self.assertEqual(--2, 2)
-        self.assert_(-2 == 0 - 2)
+        self.assertTrue(-2 == 0 - 2)
 
     def test_no_overflow(self):
         nines = "9" * 32
-        self.assert_(eval("+" + nines) == 10**32-1)
-        self.assert_(eval("-" + nines) == -(10**32-1))
-        self.assert_(eval("~" + nines) == ~(10**32-1))
+        self.assertTrue(eval("+" + nines) == 10**32-1)
+        self.assertTrue(eval("-" + nines) == -(10**32-1))
+        self.assertTrue(eval("~" + nines) == ~(10**32-1))
 
     def test_negation_of_exponentiation(self):
         # Make sure '**' does the right thing; these form a
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 1ff7ee3..7f87b43 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -48,7 +48,7 @@
         method = getattr(object, methodname)
         realresult = method(*args)
         self.assertEqual(realresult, result)
-        self.assert_(type(realresult) is type(result))
+        self.assertTrue(type(realresult) is type(result))
 
         # if the original is returned make sure that
         # this doesn't happen with subclasses
@@ -60,7 +60,7 @@
             method = getattr(object, methodname)
             realresult = method(*args)
             self.assertEqual(realresult, result)
-            self.assert_(object is not realresult)
+            self.assertTrue(object is not realresult)
 
     def test_literals(self):
         self.assertEqual('\xff', '\u00ff')
@@ -294,25 +294,25 @@
         self.assertEqual('abc', 'abc')
         self.assertEqual('abc', 'abc')
         self.assertEqual('abc', 'abc')
-        self.assert_('abcd' > 'abc')
-        self.assert_('abcd' > 'abc')
-        self.assert_('abcd' > 'abc')
-        self.assert_('abc' < 'abcd')
-        self.assert_('abc' < 'abcd')
-        self.assert_('abc' < 'abcd')
+        self.assertTrue('abcd' > 'abc')
+        self.assertTrue('abcd' > 'abc')
+        self.assertTrue('abcd' > 'abc')
+        self.assertTrue('abc' < 'abcd')
+        self.assertTrue('abc' < 'abcd')
+        self.assertTrue('abc' < 'abcd')
 
         if 0:
             # Move these tests to a Unicode collation module test...
             # Testing UTF-16 code point order comparisons...
 
             # No surrogates, no fixup required.
-            self.assert_('\u0061' < '\u20ac')
+            self.assertTrue('\u0061' < '\u20ac')
             # Non surrogate below surrogate value, no fixup required
-            self.assert_('\u0061' < '\ud800\udc02')
+            self.assertTrue('\u0061' < '\ud800\udc02')
 
             # Non surrogate above surrogate value, fixup required
             def test_lecmp(s, s2):
-                self.assert_(s < s2)
+                self.assertTrue(s < s2)
 
             def test_fixup(s):
                 s2 = '\ud800\udc01'
@@ -352,7 +352,7 @@
                 test_fixup('\uff61')
 
         # Surrogates on both sides, no fixup required
-        self.assert_('\ud800\udc02' < '\ud84d\udc56')
+        self.assertTrue('\ud800\udc02' < '\ud84d\udc56')
 
     def test_islower(self):
         string_tests.MixinStrUnicodeUserStringTest.test_islower(self)
@@ -436,32 +436,32 @@
 
     def test_contains(self):
         # Testing Unicode contains method
-        self.assert_('a' in 'abdb')
-        self.assert_('a' in 'bdab')
-        self.assert_('a' in 'bdaba')
-        self.assert_('a' in 'bdba')
-        self.assert_('a' not in 'bdb')
-        self.assert_('a' in 'bdba')
-        self.assert_('a' in ('a',1,None))
-        self.assert_('a' in (1,None,'a'))
-        self.assert_('a' in ('a',1,None))
-        self.assert_('a' in (1,None,'a'))
-        self.assert_('a' not in ('x',1,'y'))
-        self.assert_('a' not in ('x',1,None))
-        self.assert_('abcd' not in 'abcxxxx')
-        self.assert_('ab' in 'abcd')
-        self.assert_('ab' in 'abc')
-        self.assert_('ab' in (1,None,'ab'))
-        self.assert_('' in 'abc')
-        self.assert_('' in '')
-        self.assert_('' in 'abc')
-        self.assert_('\0' not in 'abc')
-        self.assert_('\0' in '\0abc')
-        self.assert_('\0' in 'abc\0')
-        self.assert_('a' in '\0abc')
-        self.assert_('asdf' in 'asdf')
-        self.assert_('asdf' not in 'asd')
-        self.assert_('asdf' not in '')
+        self.assertTrue('a' in 'abdb')
+        self.assertTrue('a' in 'bdab')
+        self.assertTrue('a' in 'bdaba')
+        self.assertTrue('a' in 'bdba')
+        self.assertTrue('a' not in 'bdb')
+        self.assertTrue('a' in 'bdba')
+        self.assertTrue('a' in ('a',1,None))
+        self.assertTrue('a' in (1,None,'a'))
+        self.assertTrue('a' in ('a',1,None))
+        self.assertTrue('a' in (1,None,'a'))
+        self.assertTrue('a' not in ('x',1,'y'))
+        self.assertTrue('a' not in ('x',1,None))
+        self.assertTrue('abcd' not in 'abcxxxx')
+        self.assertTrue('ab' in 'abcd')
+        self.assertTrue('ab' in 'abc')
+        self.assertTrue('ab' in (1,None,'ab'))
+        self.assertTrue('' in 'abc')
+        self.assertTrue('' in '')
+        self.assertTrue('' in 'abc')
+        self.assertTrue('\0' not in 'abc')
+        self.assertTrue('\0' in '\0abc')
+        self.assertTrue('\0' in 'abc\0')
+        self.assertTrue('a' in '\0abc')
+        self.assertTrue('asdf' in 'asdf')
+        self.assertTrue('asdf' not in 'asd')
+        self.assertTrue('asdf' not in '')
 
         self.assertRaises(TypeError, "abc".__contains__)
 
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index fd561f1..367715a 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -25,19 +25,19 @@
     # Do all the tests we can given only a single filename.  The file should
     # exist.
     def _do_single(self, filename):
-        self.failUnless(os.path.exists(filename))
-        self.failUnless(os.path.isfile(filename))
-        self.failUnless(os.access(filename, os.R_OK))
-        self.failUnless(os.path.exists(os.path.abspath(filename)))
-        self.failUnless(os.path.isfile(os.path.abspath(filename)))
-        self.failUnless(os.access(os.path.abspath(filename), os.R_OK))
+        self.assertTrue(os.path.exists(filename))
+        self.assertTrue(os.path.isfile(filename))
+        self.assertTrue(os.access(filename, os.R_OK))
+        self.assertTrue(os.path.exists(os.path.abspath(filename)))
+        self.assertTrue(os.path.isfile(os.path.abspath(filename)))
+        self.assertTrue(os.access(os.path.abspath(filename), os.R_OK))
         os.chmod(filename, 0o777)
         os.utime(filename, None)
         os.utime(filename, (time.time(), time.time()))
         # Copy/rename etc tests using the same filename
         self._do_copyish(filename, filename)
         # Filename should appear in glob output
-        self.failUnless(
+        self.assertTrue(
             os.path.abspath(filename)==os.path.abspath(glob.glob(filename)[0]))
         # basename should appear in listdir.
         path, base = os.path.split(os.path.abspath(filename))
@@ -47,7 +47,7 @@
         base = unicodedata.normalize("NFD", base)
         file_list = [unicodedata.normalize("NFD", f) for f in file_list]
 
-        self.failUnless(base in file_list)
+        self.assertTrue(base in file_list)
 
     # Do as many "equivalancy' tests as we can - ie, check that although we
     # have different types for the filename, they refer to the same file.
@@ -55,12 +55,12 @@
         # Note we only check "filename1 against filename2" - we don't bother
         # checking "filename2 against 1", as we assume we are called again with
         # the args reversed.
-        self.failUnless(type(filename1)!=type(filename2),
+        self.assertTrue(type(filename1)!=type(filename2),
                     "No point checking equivalent filenames of the same type")
         # stat and lstat should return the same results.
-        self.failUnlessEqual(os.stat(filename1),
+        self.assertEqual(os.stat(filename1),
                              os.stat(filename2))
-        self.failUnlessEqual(os.lstat(filename1),
+        self.assertEqual(os.lstat(filename1),
                              os.lstat(filename2))
         # Copy/rename etc tests using equivalent filename
         self._do_copyish(filename1, filename2)
@@ -68,19 +68,19 @@
     # Tests that copy, move, etc one file to another.
     def _do_copyish(self, filename1, filename2):
         # Should be able to rename the file using either name.
-        self.failUnless(os.path.isfile(filename1)) # must exist.
+        self.assertTrue(os.path.isfile(filename1)) # must exist.
         os.rename(filename1, filename2 + ".new")
-        self.failUnless(os.path.isfile(filename1+".new"))
+        self.assertTrue(os.path.isfile(filename1+".new"))
         os.rename(filename1 + ".new", filename2)
-        self.failUnless(os.path.isfile(filename2))
+        self.assertTrue(os.path.isfile(filename2))
 
         shutil.copy(filename1, filename2 + ".new")
         os.unlink(filename1 + ".new") # remove using equiv name.
         # And a couple of moves, one using each name.
         shutil.move(filename1, filename2 + ".new")
-        self.failUnless(not os.path.exists(filename2))
+        self.assertTrue(not os.path.exists(filename2))
         shutil.move(filename1 + ".new", filename2)
-        self.failUnless(os.path.exists(filename1))
+        self.assertTrue(os.path.exists(filename1))
         # Note - due to the implementation of shutil.move,
         # it tries a rename first.  This only fails on Windows when on
         # different file systems - and this test can't ensure that.
@@ -107,7 +107,7 @@
                 cwd_result = unicodedata.normalize("NFD", cwd_result)
                 name_result = unicodedata.normalize("NFD", name_result)
 
-                self.failUnlessEqual(os.path.basename(cwd_result),name_result)
+                self.assertEqual(os.path.basename(cwd_result),name_result)
             finally:
                 os.chdir(cwd)
         finally:
@@ -123,7 +123,7 @@
             self._do_single(filename)
         finally:
             os.unlink(filename)
-        self.failUnless(not os.path.exists(filename))
+        self.assertTrue(not os.path.exists(filename))
         # and again with os.open.
         f = os.open(filename, os.O_CREAT)
         os.close(f)
@@ -134,7 +134,7 @@
 
     def _test_equivalent(self, filename1, filename2):
         remove_if_exists(filename1)
-        self.failUnless(not os.path.exists(filename2))
+        self.assertTrue(not os.path.exists(filename2))
         f = file(filename1, "w")
         f.close()
         try:
diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
index 285a352..a658d7b 100644
--- a/Lib/test/test_unicodedata.py
+++ b/Lib/test/test_unicodedata.py
@@ -232,7 +232,7 @@
             if dec != -1:
                 self.assertEqual(dec, self.db.numeric(c))
                 count += 1
-        self.assert_(count >= 10) # should have tested at least the ASCII digits
+        self.assertTrue(count >= 10) # should have tested at least the ASCII digits
 
     def test_digit_numeric_consistent(self):
         # Test that digit and numeric are consistent,
@@ -245,7 +245,7 @@
             if dec != -1:
                 self.assertEqual(dec, self.db.numeric(c))
                 count += 1
-        self.assert_(count >= 10) # should have tested at least the ASCII digits
+        self.assertTrue(count >= 10) # should have tested at least the ASCII digits
 
     def test_bug_1704793(self):
         self.assertEquals(self.db.lookup("GOTHIC LETTER FAIHU"), '\U00010346')
@@ -253,13 +253,13 @@
     def test_ucd_510(self):
         import unicodedata
         # In UCD 5.1.0, a mirrored property changed wrt. UCD 3.2.0
-        self.assert_(unicodedata.mirrored("\u0f3a"))
-        self.assert_(not unicodedata.ucd_3_2_0.mirrored("\u0f3a"))
+        self.assertTrue(unicodedata.mirrored("\u0f3a"))
+        self.assertTrue(not unicodedata.ucd_3_2_0.mirrored("\u0f3a"))
         # Also, we now have two ways of representing
         # the upper-case mapping: as delta, or as absolute value
-        self.assert_("a".upper()=='A')
-        self.assert_("\u1d79".upper()=='\ua77d')
-        self.assert_(".".upper()=='.')
+        self.assertTrue("a".upper()=='A')
+        self.assertTrue("\u1d79".upper()=='\ua77d')
+        self.assertTrue(".".upper()=='.')
 
     def test_bug_5828(self):
         self.assertEqual("\u1d79".lower(), "\u1d79")
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index ba742af..cae3619 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -63,7 +63,7 @@
         # Make sure object returned by urlopen() has the specified methods
         for attr in ("read", "readline", "readlines", "fileno",
                      "close", "info", "geturl", "getcode", "__iter__"):
-            self.assert_(hasattr(self.returned_obj, attr),
+            self.assertTrue(hasattr(self.returned_obj, attr),
                          "object returned by urlopen() lacks %s attribute" %
                          attr)
 
@@ -85,7 +85,7 @@
 
     def test_fileno(self):
         file_num = self.returned_obj.fileno()
-        self.assert_(isinstance(file_num, int),
+        self.assertTrue(isinstance(file_num, int),
                      "fileno() did not return an int")
         self.assertEqual(os.read(file_num, len(self.text)), self.text,
                          "Reading on the file descriptor returned by fileno() "
@@ -97,7 +97,7 @@
         self.returned_obj.close()
 
     def test_info(self):
-        self.assert_(isinstance(self.returned_obj.info(), email.message.Message))
+        self.assertTrue(isinstance(self.returned_obj.info(), email.message.Message))
 
     def test_geturl(self):
         self.assertEqual(self.returned_obj.geturl(), self.pathname)
@@ -246,7 +246,7 @@
         # a headers value is returned.
         result = urllib.request.urlretrieve("file:%s" % support.TESTFN)
         self.assertEqual(result[0], support.TESTFN)
-        self.assert_(isinstance(result[1], email.message.Message),
+        self.assertTrue(isinstance(result[1], email.message.Message),
                      "did not get a email.message.Message instance as second "
                      "returned value")
 
@@ -257,7 +257,7 @@
         result = urllib.request.urlretrieve(self.constructLocalFileUrl(
             support.TESTFN), second_temp)
         self.assertEqual(second_temp, result[0])
-        self.assert_(os.path.exists(second_temp), "copy of the file was not "
+        self.assertTrue(os.path.exists(second_temp), "copy of the file was not "
                                                   "made")
         FILE = open(second_temp, 'rb')
         try:
@@ -271,9 +271,9 @@
     def test_reporthook(self):
         # Make sure that the reporthook works.
         def hooktester(count, block_size, total_size, count_holder=[0]):
-            self.assert_(isinstance(count, int))
-            self.assert_(isinstance(block_size, int))
-            self.assert_(isinstance(total_size, int))
+            self.assertTrue(isinstance(count, int))
+            self.assertTrue(isinstance(block_size, int))
+            self.assertTrue(isinstance(total_size, int))
             self.assertEqual(count, count_holder[0])
             count_holder[0] = count_holder[0] + 1
         second_temp = "%s.2" % support.TESTFN
@@ -727,7 +727,7 @@
         expect_somewhere = ["1st=1", "2nd=2", "3rd=3"]
         result = urllib.parse.urlencode(given)
         for expected in expect_somewhere:
-            self.assert_(expected in result,
+            self.assertTrue(expected in result,
                          "testing %s: %s not found in %s" %
                          (test_type, expected, result))
         self.assertEqual(result.count('&'), 2,
@@ -736,7 +736,7 @@
         amp_location = result.index('&')
         on_amp_left = result[amp_location - 1]
         on_amp_right = result[amp_location + 1]
-        self.assert_(on_amp_left.isdigit() and on_amp_right.isdigit(),
+        self.assertTrue(on_amp_left.isdigit() and on_amp_right.isdigit(),
                      "testing %s: '&' not located in proper place in %s" %
                      (test_type, result))
         self.assertEqual(len(result), (5 * 3) + 2, #5 chars per thing and amps
@@ -774,7 +774,7 @@
         result = urllib.parse.urlencode(given, True)
         for value in given["sequence"]:
             expect = "sequence=%s" % value
-            self.assert_(expect in result,
+            self.assertTrue(expect in result,
                          "%s not found in %s" % (expect, result))
         self.assertEqual(result.count('&'), 2,
                          "Expected 2 '&'s, got %s" % result.count('&'))
@@ -915,7 +915,7 @@
 #     def testTimeoutNone(self):
 #         # global default timeout is ignored
 #         import socket
-#         self.assert_(socket.getdefaulttimeout() is None)
+#         self.assertTrue(socket.getdefaulttimeout() is None)
 #         socket.setdefaulttimeout(30)
 #         try:
 #             ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [])
@@ -927,7 +927,7 @@
 #     def testTimeoutDefault(self):
 #         # global default timeout is used
 #         import socket
-#         self.assert_(socket.getdefaulttimeout() is None)
+#         self.assertTrue(socket.getdefaulttimeout() is None)
 #         socket.setdefaulttimeout(30)
 #         try:
 #             ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [])
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 87d0116..8093f0e 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -519,15 +519,15 @@
                 # *_request
                 self.assertEqual((handler, name), calls[i])
                 self.assertEqual(len(args), 1)
-                self.assert_(isinstance(args[0], Request))
+                self.assertTrue(isinstance(args[0], Request))
             else:
                 # *_response
                 self.assertEqual((handler, name), calls[i])
                 self.assertEqual(len(args), 2)
-                self.assert_(isinstance(args[0], Request))
+                self.assertTrue(isinstance(args[0], Request))
                 # response from opener.open is None, because there's no
                 # handler that defines http_open to handle it
-                self.assert_(args[1] is None or
+                self.assertTrue(args[1] is None or
                              isinstance(args[1], MockResponse))
 
 
@@ -577,7 +577,7 @@
             req.timeout = None
             r = h.ftp_open(req)
             # ftp authentication not yet implemented by FTPHandler
-            self.assert_(h.user == h.passwd == "")
+            self.assertTrue(h.user == h.passwd == "")
             self.assertEqual(h.host, socket.gethostbyname(host))
             self.assertEqual(h.port, port)
             self.assertEqual(h.dirs, dirs)
@@ -671,9 +671,9 @@
                 h.file_open(req)
             # XXXX remove OSError when bug fixed
             except (urllib.error.URLError, OSError):
-                self.assert_(not ftp)
+                self.assertTrue(not ftp)
             else:
-                self.assert_(o.req is req)
+                self.assertTrue(o.req is req)
                 self.assertEqual(req.type, "ftp")
 
     def test_http(self):
@@ -754,8 +754,8 @@
             r = MockResponse(200, "OK", {}, "")
             newreq = h.do_request_(req)
             if data is None:  # GET
-                self.assert_("Content-length" not in req.unredirected_hdrs)
-                self.assert_("Content-type" not in req.unredirected_hdrs)
+                self.assertTrue("Content-length" not in req.unredirected_hdrs)
+                self.assertTrue("Content-type" not in req.unredirected_hdrs)
             else:  # POST
                 self.assertEqual(req.unredirected_hdrs["Content-length"], "0")
                 self.assertEqual(req.unredirected_hdrs["Content-type"],
@@ -812,19 +812,19 @@
         # all 2xx are passed through
         r = MockResponse(200, "OK", {}, "", url)
         newr = h.http_response(req, r)
-        self.assert_(r is newr)
-        self.assert_(not hasattr(o, "proto"))  # o.error not called
+        self.assertTrue(r is newr)
+        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
         r = MockResponse(202, "Accepted", {}, "", url)
         newr = h.http_response(req, r)
-        self.assert_(r is newr)
-        self.assert_(not hasattr(o, "proto"))  # o.error not called
+        self.assertTrue(r is newr)
+        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
         r = MockResponse(206, "Partial content", {}, "", url)
         newr = h.http_response(req, r)
-        self.assert_(r is newr)
-        self.assert_(not hasattr(o, "proto"))  # o.error not called
+        self.assertTrue(r is newr)
+        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
         # anything else calls o.error (and MockOpener returns None, here)
         r = MockResponse(502, "Bad gateway", {}, "", url)
-        self.assert_(h.http_response(req, r) is None)
+        self.assertTrue(h.http_response(req, r) is None)
         self.assertEqual(o.proto, "http")  # o.error called
         self.assertEqual(o.args, (req, r, 502, "Bad gateway", {}))
 
@@ -836,12 +836,12 @@
         req = Request("http://example.com/")
         r = MockResponse(200, "OK", {}, "")
         newreq = h.http_request(req)
-        self.assert_(cj.ach_req is req is newreq)
+        self.assertTrue(cj.ach_req is req is newreq)
         self.assertEquals(req.get_origin_req_host(), "example.com")
-        self.assert_(not req.is_unverifiable())
+        self.assertTrue(not req.is_unverifiable())
         newr = h.http_response(req, r)
-        self.assert_(cj.ec_req is req)
-        self.assert_(cj.ec_r is r is newr)
+        self.assertTrue(cj.ec_req is req)
+        self.assertTrue(cj.ec_r is r is newr)
 
     def test_redirect(self):
         from_url = "http://example.com/a.html"
@@ -864,12 +864,12 @@
                            MockHeaders({"location": to_url}))
                 except urllib.error.HTTPError:
                     # 307 in response to POST requires user OK
-                    self.assert_(code == 307 and data is not None)
+                    self.assertTrue(code == 307 and data is not None)
                 self.assertEqual(o.req.get_full_url(), to_url)
                 try:
                     self.assertEqual(o.req.get_method(), "GET")
                 except AttributeError:
-                    self.assert_(not o.req.has_data())
+                    self.assertTrue(not o.req.has_data())
 
                 # now it's a GET, there should not be headers regarding content
                 # (possibly dragged from before being a POST)
@@ -879,8 +879,8 @@
 
                 self.assertEqual(o.req.headers["Nonsense"],
                                  "viking=withhold")
-                self.assert_("Spam" not in o.req.headers)
-                self.assert_("Spam" not in o.req.unredirected_hdrs)
+                self.assertTrue("Spam" not in o.req.headers)
+                self.assertTrue("Spam" not in o.req.unredirected_hdrs)
 
         # loop detection
         req = Request(from_url)
@@ -928,7 +928,7 @@
         cp = urllib.request.HTTPCookieProcessor(cj)
         o = build_test_opener(hh, hdeh, hrh, cp)
         o.open("http://www.example.com/")
-        self.assert_(not hh.req.has_header("Cookie"))
+        self.assertTrue(not hh.req.has_header("Cookie"))
 
     def test_proxy(self):
         o = OpenerDirector()
@@ -1128,7 +1128,7 @@
             if h.__class__ == handler_class:
                 break
         else:
-            self.assert_(False)
+            self.assertTrue(False)
 
 class RequestTests(unittest.TestCase):
 
@@ -1143,10 +1143,10 @@
         self.assertEqual("GET", self.get.get_method())
 
     def test_add_data(self):
-        self.assert_(not self.get.has_data())
+        self.assertTrue(not self.get.has_data())
         self.assertEqual("GET", self.get.get_method())
         self.get.add_data("spam")
-        self.assert_(self.get.has_data())
+        self.assertTrue(self.get.has_data())
         self.assertEqual("POST", self.get.get_method())
 
     def test_get_full_url(self):
@@ -1169,9 +1169,9 @@
         self.assertEqual("www.python.org", req.get_host())
 
     def test_proxy(self):
-        self.assert_(not self.get.has_proxy())
+        self.assertTrue(not self.get.has_proxy())
         self.get.set_proxy("www.perl.org", "http")
-        self.assert_(self.get.has_proxy())
+        self.assertTrue(self.get.has_proxy())
         self.assertEqual("www.python.org", self.get.get_origin_req_host())
         self.assertEqual("www.perl.org", self.get.get_host())
 
diff --git a/Lib/test/test_urllib2_localnet.py b/Lib/test/test_urllib2_localnet.py
index 8641c4b..43485c2 100644
--- a/Lib/test/test_urllib2_localnet.py
+++ b/Lib/test/test_urllib2_localnet.py
@@ -438,10 +438,10 @@
         handler = self.start_server()
         open_url = urllib.request.urlopen("http://localhost:%s" % handler.port)
         for attr in ("read", "close", "info", "geturl"):
-            self.assert_(hasattr(open_url, attr), "object returned from "
+            self.assertTrue(hasattr(open_url, attr), "object returned from "
                          "urlopen lacks the %s attribute" % attr)
         try:
-            self.assert_(open_url.read(), "calling 'read' failed")
+            self.assertTrue(open_url.read(), "calling 'read' failed")
         finally:
             open_url.close()
 
@@ -451,7 +451,7 @@
             open_url = urllib.request.urlopen(
                 "http://localhost:%s" % handler.port)
             info_obj = open_url.info()
-            self.assert_(isinstance(info_obj, email.message.Message),
+            self.assertTrue(isinstance(info_obj, email.message.Message),
                          "object returned by 'info' is not an instance of "
                          "email.message.Message")
             self.assertEqual(info_obj.get_content_subtype(), "plain")
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index dc2d99d..59a73c9 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -82,9 +82,9 @@
 
         response = _urlopen_with_retry("http://www.python.org/")
         sock = response.fp
-        self.assert_(not sock.closed)
+        self.assertTrue(not sock.closed)
         response.close()
-        self.assert_(sock.closed)
+        self.assertTrue(sock.closed)
 
 class OtherNetworkTests(unittest.TestCase):
     def setUp(self):
@@ -172,7 +172,7 @@
                 if expected_err:
                     msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" %
                            (expected_err, url, req, type(err), err))
-                    self.assert_(isinstance(err, expected_err), msg)
+                    self.assertTrue(isinstance(err, expected_err), msg)
             else:
                 with support.time_out, \
                      support.socket_peer_reset, \
diff --git a/Lib/test/test_urllibnet.py b/Lib/test/test_urllibnet.py
index e2c8af3..63e061a 100644
--- a/Lib/test/test_urllibnet.py
+++ b/Lib/test/test_urllibnet.py
@@ -62,10 +62,10 @@
         open_url = self.urlopen("http://www.python.org/")
         for attr in ("read", "readline", "readlines", "fileno", "close",
                      "info", "geturl"):
-            self.assert_(hasattr(open_url, attr), "object returned from "
+            self.assertTrue(hasattr(open_url, attr), "object returned from "
                             "urlopen lacks the %s attribute" % attr)
         try:
-            self.assert_(open_url.read(), "calling 'read' failed")
+            self.assertTrue(open_url.read(), "calling 'read' failed")
         finally:
             open_url.close()
 
@@ -73,9 +73,9 @@
         # Test both readline and readlines.
         open_url = self.urlopen("http://www.python.org/")
         try:
-            self.assert_(isinstance(open_url.readline(), bytes),
+            self.assertTrue(isinstance(open_url.readline(), bytes),
                          "readline did not return bytes")
-            self.assert_(isinstance(open_url.readlines(), list),
+            self.assertTrue(isinstance(open_url.readlines(), list),
                          "readlines did not return a list")
         finally:
             open_url.close()
@@ -87,7 +87,7 @@
             info_obj = open_url.info()
         finally:
             open_url.close()
-            self.assert_(isinstance(info_obj, email.message.Message),
+            self.assertTrue(isinstance(info_obj, email.message.Message),
                          "object returned by 'info' is not an instance of "
                          "email.message.Message")
             self.assertEqual(info_obj.get_content_subtype(), "html")
@@ -122,7 +122,7 @@
         fd = open_url.fileno()
         FILE = os.fdopen(fd, encoding='utf-8')
         try:
-            self.assert_(FILE.read(), "reading from file created using fd "
+            self.assertTrue(FILE.read(), "reading from file created using fd "
                                       "returned by fileno failed")
         finally:
             FILE.close()
@@ -150,11 +150,11 @@
     def test_basic(self):
         # Test basic functionality.
         file_location,info = self.urlretrieve("http://www.python.org/")
-        self.assert_(os.path.exists(file_location), "file location returned by"
+        self.assertTrue(os.path.exists(file_location), "file location returned by"
                         " urlretrieve is not a valid path")
         FILE = open(file_location, encoding='utf-8')
         try:
-            self.assert_(FILE.read(), "reading from the file location returned"
+            self.assertTrue(FILE.read(), "reading from the file location returned"
                          " by urlretrieve failed")
         finally:
             FILE.close()
@@ -165,10 +165,10 @@
         file_location,info = self.urlretrieve("http://www.python.org/",
                                               support.TESTFN)
         self.assertEqual(file_location, support.TESTFN)
-        self.assert_(os.path.exists(file_location))
+        self.assertTrue(os.path.exists(file_location))
         FILE = open(file_location, encoding='utf-8')
         try:
-            self.assert_(FILE.read(), "reading from temporary file failed")
+            self.assertTrue(FILE.read(), "reading from temporary file failed")
         finally:
             FILE.close()
             os.unlink(file_location)
@@ -177,7 +177,7 @@
         # Make sure header returned as 2nd value from urlretrieve is good.
         file_location, header = self.urlretrieve("http://www.python.org/")
         os.unlink(file_location)
-        self.assert_(isinstance(header, email.message.Message),
+        self.assertTrue(isinstance(header, email.message.Message),
                      "header is not an instance of email.message.Message")
 
 
diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py
index 5d4a0ff..9d0a8b1 100644
--- a/Lib/test/test_userdict.py
+++ b/Lib/test/test_userdict.py
@@ -38,9 +38,9 @@
         self.assertEqual(collections.UserDict().fromkeys('one two'.split()), d4)
         self.assertEqual(collections.UserDict.fromkeys('one two'.split(), 1), d5)
         self.assertEqual(collections.UserDict().fromkeys('one two'.split(), 1), d5)
-        self.assert_(u1.fromkeys('one two'.split()) is not u1)
-        self.assert_(isinstance(u1.fromkeys('one two'.split()), collections.UserDict))
-        self.assert_(isinstance(u2.fromkeys('one two'.split()), collections.UserDict))
+        self.assertTrue(u1.fromkeys('one two'.split()) is not u1)
+        self.assertTrue(isinstance(u1.fromkeys('one two'.split()), collections.UserDict))
+        self.assertTrue(isinstance(u2.fromkeys('one two'.split()), collections.UserDict))
 
         # Test __repr__
         self.assertEqual(str(u0), str(d0))
@@ -95,7 +95,7 @@
 
         # Test "in".
         for i in u2.keys():
-            self.assert_(i in u2)
+            self.assertTrue(i in u2)
             self.assertEqual(i in u1, i in d1)
             self.assertEqual(i in u0, i in d0)
 
@@ -122,7 +122,7 @@
         # Test setdefault
         t = collections.UserDict()
         self.assertEqual(t.setdefault("x", 42), 42)
-        self.assert_("x" in t)
+        self.assertTrue("x" in t)
         self.assertEqual(t.setdefault("x", 23), 42)
 
         # Test pop
@@ -152,8 +152,8 @@
         d = D({1: 2, 3: 4})
         self.assertEqual(d[1], 2)
         self.assertEqual(d[3], 4)
-        self.assert_(2 not in d)
-        self.assert_(2 not in d.keys())
+        self.assertTrue(2 not in d)
+        self.assertTrue(2 not in d.keys())
         self.assertEqual(d[2], 42)
         class E(collections.UserDict):
             def __missing__(self, key):
diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py
index cf9ea84..b749abc 100644
--- a/Lib/test/test_uuid.py
+++ b/Lib/test/test_uuid.py
@@ -293,8 +293,8 @@
         self.assertEqual(universal_local_bit, 0, message)
         self.assertNotEqual(node, 0, message)
         self.assertNotEqual(node, 0xffffffffffff, message)
-        self.assert_(0 <= node, message)
-        self.assert_(node < (1 << 48), message)
+        self.assertTrue(0 <= node, message)
+        self.assertTrue(node < (1 << 48), message)
 
         TestUUID.source2node[source] = node
         if TestUUID.last_node:
@@ -335,8 +335,8 @@
 
     def test_random_getnode(self):
         node = uuid._random_getnode()
-        self.assert_(0 <= node)
-        self.assert_(node < (1 <<48))
+        self.assertTrue(0 <= node)
+        self.assertTrue(node < (1 <<48))
 
     def test_unixdll_getnode(self):
         import sys
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index 292c018..7393d25 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -83,9 +83,9 @@
             self.module.filterwarnings("always", category=UserWarning)
             message = "FilterTests.test_always"
             self.module.warn(message, UserWarning)
-            self.assert_(message, w[-1].message)
+            self.assertTrue(message, w[-1].message)
             self.module.warn(message, UserWarning)
-            self.assert_(w[-1].message, message)
+            self.assertTrue(w[-1].message, message)
 
     def test_default(self):
         with original_warnings.catch_warnings(record=True,
@@ -165,7 +165,7 @@
             text = 'handle normally'
             self.module.warn(text)
             self.assertEqual(str(w[-1].message), text)
-            self.assert_(w[-1].category is UserWarning)
+            self.assertTrue(w[-1].category is UserWarning)
 
             self.module.filterwarnings("ignore", "", Warning, "", 0)
             text = 'filtered out'
@@ -178,7 +178,7 @@
             text = 'nonmatching text'
             self.module.warn(text)
             self.assertEqual(str(w[-1].message), text)
-            self.assert_(w[-1].category is UserWarning)
+            self.assertTrue(w[-1].category is UserWarning)
 
 class CFilterTests(BaseTest, FilterTests):
     module = c_warnings
@@ -198,7 +198,7 @@
                 text = 'multi %d' %i  # Different text on each call.
                 self.module.warn(text)
                 self.assertEqual(str(w[-1].message), text)
-                self.assert_(w[-1].category is UserWarning)
+                self.assertTrue(w[-1].category is UserWarning)
 
     # Issue 3639
     def test_warn_nonstandard_types(self):
@@ -421,7 +421,7 @@
                 self.module.resetwarnings()
                 self.module.filterwarnings("once", category=UserWarning)
                 self.module.warn_explicit(message, UserWarning, "file", 42)
-                self.failUnlessEqual(w[-1].message, message)
+                self.assertEqual(w[-1].message, message)
                 del w[:]
                 self.module.warn_explicit(message, UserWarning, "file", 42)
                 self.assertEquals(len(w), 0)
@@ -429,7 +429,7 @@
                 self.module.onceregistry = {}
                 __warningregistry__ = {}
                 self.module.warn('onceregistry test')
-                self.failUnlessEqual(w[-1].message.args, message.args)
+                self.assertEqual(w[-1].message.args, message.args)
                 # Removal of onceregistry is okay.
                 del w[:]
                 del self.module.onceregistry
@@ -483,7 +483,7 @@
             with support.captured_output('stderr') as stream:
                 self.module.warn(text)
                 result = stream.getvalue()
-        self.failUnless(text in result)
+        self.assertTrue(text in result)
 
     def test_showwarning_not_callable(self):
         with original_warnings.catch_warnings(module=self.module):
@@ -504,19 +504,19 @@
             with support.captured_output('stderr') as stream:
                 warning_tests.inner(text)
                 result = stream.getvalue()
-        self.failUnlessEqual(result.count('\n'), 2,
+        self.assertEqual(result.count('\n'), 2,
                              "Too many newlines in %r" % result)
         first_line, second_line = result.split('\n', 1)
         expected_file = os.path.splitext(warning_tests.__file__)[0] + '.py'
         first_line_parts = first_line.rsplit(':', 3)
         path, line, warning_class, message = first_line_parts
         line = int(line)
-        self.failUnlessEqual(expected_file, path)
-        self.failUnlessEqual(warning_class, ' ' + UserWarning.__name__)
-        self.failUnlessEqual(message, ' ' + text)
+        self.assertEqual(expected_file, path)
+        self.assertEqual(warning_class, ' ' + UserWarning.__name__)
+        self.assertEqual(message, ' ' + text)
         expected_line = '  ' + linecache.getline(path, line).strip() + '\n'
         assert expected_line
-        self.failUnlessEqual(second_line, expected_line)
+        self.assertEqual(second_line, expected_line)
 
 
 class WarningsDisplayTests(unittest.TestCase):
@@ -533,13 +533,13 @@
         format = "%s:%s: %s: %s\n  %s\n"
         expect = format % (file_name, line_num, category.__name__, message,
                             file_line)
-        self.failUnlessEqual(expect, self.module.formatwarning(message,
+        self.assertEqual(expect, self.module.formatwarning(message,
                                                 category, file_name, line_num))
         # Test the 'line' argument.
         file_line += " for the win!"
         expect = format % (file_name, line_num, category.__name__, message,
                             file_line)
-        self.failUnlessEqual(expect, self.module.formatwarning(message,
+        self.assertEqual(expect, self.module.formatwarning(message,
                                     category, file_name, line_num, file_line))
 
     def test_showwarning(self):
@@ -553,7 +553,7 @@
                                             line_num)
         self.module.showwarning(message, category, file_name, line_num,
                                 file_object)
-        self.failUnlessEqual(file_object.getvalue(), expect)
+        self.assertEqual(file_object.getvalue(), expect)
         # Test 'line' argument.
         expected_file_line += "for the win!"
         expect = self.module.formatwarning(message, category, file_name,
@@ -561,7 +561,7 @@
         file_object = StringIO()
         self.module.showwarning(message, category, file_name, line_num,
                                 file_object, expected_file_line)
-        self.failUnlessEqual(expect, file_object.getvalue())
+        self.assertEqual(expect, file_object.getvalue())
 
 class CWarningsDisplayTests(BaseTest, WarningsDisplayTests):
     module = c_warnings
@@ -581,20 +581,20 @@
         # Ensure both showwarning and filters are restored when recording
         with wmod.catch_warnings(module=wmod, record=True):
             wmod.filters = wmod.showwarning = object()
-        self.assert_(wmod.filters is orig_filters)
-        self.assert_(wmod.showwarning is orig_showwarning)
+        self.assertTrue(wmod.filters is orig_filters)
+        self.assertTrue(wmod.showwarning is orig_showwarning)
         # Same test, but with recording disabled
         with wmod.catch_warnings(module=wmod, record=False):
             wmod.filters = wmod.showwarning = object()
-        self.assert_(wmod.filters is orig_filters)
-        self.assert_(wmod.showwarning is orig_showwarning)
+        self.assertTrue(wmod.filters is orig_filters)
+        self.assertTrue(wmod.showwarning is orig_showwarning)
 
     def test_catch_warnings_recording(self):
         wmod = self.module
         # Ensure warnings are recorded when requested
         with wmod.catch_warnings(module=wmod, record=True) as w:
             self.assertEqual(w, [])
-            self.assert_(type(w) is list)
+            self.assertTrue(type(w) is list)
             wmod.simplefilter("always")
             wmod.warn("foo")
             self.assertEqual(str(w[-1].message), "foo")
@@ -607,8 +607,8 @@
         # Ensure warnings are not recorded when not requested
         orig_showwarning = wmod.showwarning
         with wmod.catch_warnings(module=wmod, record=False) as w:
-            self.assert_(w is None)
-            self.assert_(wmod.showwarning is orig_showwarning)
+            self.assertTrue(w is None)
+            self.assertTrue(wmod.showwarning is orig_showwarning)
 
     def test_catch_warnings_reentry_guard(self):
         wmod = self.module
@@ -629,17 +629,17 @@
         orig_showwarning = wmod.showwarning
         # Ensure default behaviour is not to record warnings
         with wmod.catch_warnings(module=wmod) as w:
-            self.assert_(w is None)
-            self.assert_(wmod.showwarning is orig_showwarning)
-            self.assert_(wmod.filters is not orig_filters)
-        self.assert_(wmod.filters is orig_filters)
+            self.assertTrue(w is None)
+            self.assertTrue(wmod.showwarning is orig_showwarning)
+            self.assertTrue(wmod.filters is not orig_filters)
+        self.assertTrue(wmod.filters is orig_filters)
         if wmod is sys.modules['warnings']:
             # Ensure the default module is this one
             with wmod.catch_warnings() as w:
-                self.assert_(w is None)
-                self.assert_(wmod.showwarning is orig_showwarning)
-                self.assert_(wmod.filters is not orig_filters)
-            self.assert_(wmod.filters is orig_filters)
+                self.assertTrue(w is None)
+                self.assertTrue(wmod.showwarning is orig_showwarning)
+                self.assertTrue(wmod.filters is not orig_filters)
+            self.assertTrue(wmod.filters is orig_filters)
 
     def test_check_warnings(self):
         # Explicit tests for the test.support convenience wrapper
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 049dba2..ffa28a6 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -65,11 +65,11 @@
         ref1 = weakref.ref(o, self.callback)
         ref2 = weakref.ref(o, self.callback)
         del o
-        self.assert_(ref1() is None,
+        self.assertTrue(ref1() is None,
                      "expected reference to be invalidated")
-        self.assert_(ref2() is None,
+        self.assertTrue(ref2() is None,
                      "expected reference to be invalidated")
-        self.assert_(self.cbcalled == 2,
+        self.assertTrue(self.cbcalled == 2,
                      "callback not called the right number of times")
 
     def test_multiple_selfref_callbacks(self):
@@ -108,10 +108,10 @@
     def check_basic_ref(self, factory):
         o = factory()
         ref = weakref.ref(o)
-        self.assert_(ref() is not None,
+        self.assertTrue(ref() is not None,
                      "weak reference to live object should be live")
         o2 = ref()
-        self.assert_(o is o2,
+        self.assertTrue(o is o2,
                      "<ref>() should return original object if live")
 
     def check_basic_callback(self, factory):
@@ -119,9 +119,9 @@
         o = factory()
         ref = weakref.ref(o, self.callback)
         del o
-        self.assert_(self.cbcalled == 1,
+        self.assertTrue(self.cbcalled == 1,
                      "callback did not properly set 'cbcalled'")
-        self.assert_(ref() is None,
+        self.assertTrue(ref() is None,
                      "ref2 should be dead after deleting object reference")
 
     def test_ref_reuse(self):
@@ -131,19 +131,19 @@
         # between these two; it should make no difference
         proxy = weakref.proxy(o)
         ref2 = weakref.ref(o)
-        self.assert_(ref1 is ref2,
+        self.assertTrue(ref1 is ref2,
                      "reference object w/out callback should be re-used")
 
         o = C()
         proxy = weakref.proxy(o)
         ref1 = weakref.ref(o)
         ref2 = weakref.ref(o)
-        self.assert_(ref1 is ref2,
+        self.assertTrue(ref1 is ref2,
                      "reference object w/out callback should be re-used")
-        self.assert_(weakref.getweakrefcount(o) == 2,
+        self.assertTrue(weakref.getweakrefcount(o) == 2,
                      "wrong weak ref count for object")
         del proxy
-        self.assert_(weakref.getweakrefcount(o) == 1,
+        self.assertTrue(weakref.getweakrefcount(o) == 1,
                      "wrong weak ref count for object after deleting proxy")
 
     def test_proxy_reuse(self):
@@ -151,7 +151,7 @@
         proxy1 = weakref.proxy(o)
         ref = weakref.ref(o)
         proxy2 = weakref.proxy(o)
-        self.assert_(proxy1 is proxy2,
+        self.assertTrue(proxy1 is proxy2,
                      "proxy object w/out callback should have been re-used")
 
     def test_basic_proxy(self):
@@ -160,14 +160,14 @@
 
         L = collections.UserList()
         p = weakref.proxy(L)
-        self.failIf(p, "proxy for empty UserList should be false")
+        self.assertFalse(p, "proxy for empty UserList should be false")
         p.append(12)
         self.assertEqual(len(L), 1)
-        self.failUnless(p, "proxy for non-empty UserList should be true")
+        self.assertTrue(p, "proxy for non-empty UserList should be true")
         p[:] = [2, 3]
         self.assertEqual(len(L), 2)
         self.assertEqual(len(p), 2)
-        self.failUnless(3 in p,
+        self.assertTrue(3 in p,
                         "proxy didn't support __contains__() properly")
         p[1] = 5
         self.assertEqual(L[1], 5)
@@ -221,19 +221,19 @@
         o = Object(1)
         p1 = makeref(o, None)
         p2 = makeref(o, None)
-        self.assert_(p1 is p2, "both callbacks were None in the C API")
+        self.assertTrue(p1 is p2, "both callbacks were None in the C API")
         del p1, p2
         p1 = makeref(o)
         p2 = makeref(o, None)
-        self.assert_(p1 is p2, "callbacks were NULL, None in the C API")
+        self.assertTrue(p1 is p2, "callbacks were NULL, None in the C API")
         del p1, p2
         p1 = makeref(o)
         p2 = makeref(o)
-        self.assert_(p1 is p2, "both callbacks were NULL in the C API")
+        self.assertTrue(p1 is p2, "both callbacks were NULL in the C API")
         del p1, p2
         p1 = makeref(o, None)
         p2 = makeref(o)
-        self.assert_(p1 is p2, "callbacks were None, NULL in the C API")
+        self.assertTrue(p1 is p2, "callbacks were None, NULL in the C API")
 
     def test_callable_proxy(self):
         o = Callable()
@@ -241,13 +241,13 @@
 
         self.check_proxy(o, ref1)
 
-        self.assert_(type(ref1) is weakref.CallableProxyType,
+        self.assertTrue(type(ref1) is weakref.CallableProxyType,
                      "proxy is not of callable type")
         ref1('twinkies!')
-        self.assert_(o.bar == 'twinkies!',
+        self.assertTrue(o.bar == 'twinkies!',
                      "call through proxy not passed through to original")
         ref1(x='Splat.')
-        self.assert_(o.bar == 'Splat.',
+        self.assertTrue(o.bar == 'Splat.',
                      "call through proxy not passed through to original")
 
         # expect due to too few args
@@ -258,24 +258,24 @@
 
     def check_proxy(self, o, proxy):
         o.foo = 1
-        self.assert_(proxy.foo == 1,
+        self.assertTrue(proxy.foo == 1,
                      "proxy does not reflect attribute addition")
         o.foo = 2
-        self.assert_(proxy.foo == 2,
+        self.assertTrue(proxy.foo == 2,
                      "proxy does not reflect attribute modification")
         del o.foo
-        self.assert_(not hasattr(proxy, 'foo'),
+        self.assertTrue(not hasattr(proxy, 'foo'),
                      "proxy does not reflect attribute removal")
 
         proxy.foo = 1
-        self.assert_(o.foo == 1,
+        self.assertTrue(o.foo == 1,
                      "object does not reflect attribute addition via proxy")
         proxy.foo = 2
-        self.assert_(
+        self.assertTrue(
             o.foo == 2,
             "object does not reflect attribute modification via proxy")
         del proxy.foo
-        self.assert_(not hasattr(o, 'foo'),
+        self.assertTrue(not hasattr(o, 'foo'),
                      "object does not reflect attribute removal via proxy")
 
     def test_proxy_deletion(self):
@@ -299,21 +299,21 @@
         o = C()
         ref1 = weakref.ref(o)
         ref2 = weakref.ref(o, self.callback)
-        self.assert_(weakref.getweakrefcount(o) == 2,
+        self.assertTrue(weakref.getweakrefcount(o) == 2,
                      "got wrong number of weak reference objects")
 
         proxy1 = weakref.proxy(o)
         proxy2 = weakref.proxy(o, self.callback)
-        self.assert_(weakref.getweakrefcount(o) == 4,
+        self.assertTrue(weakref.getweakrefcount(o) == 4,
                      "got wrong number of weak reference objects")
 
         del ref1, ref2, proxy1, proxy2
-        self.assert_(weakref.getweakrefcount(o) == 0,
+        self.assertTrue(weakref.getweakrefcount(o) == 0,
                      "weak reference objects not unlinked from"
                      " referent when discarded.")
 
         # assumes ints do not support weakrefs
-        self.assert_(weakref.getweakrefcount(1) == 0,
+        self.assertTrue(weakref.getweakrefcount(1) == 0,
                      "got wrong number of weak reference objects for int")
 
     def test_getweakrefs(self):
@@ -321,22 +321,22 @@
         ref1 = weakref.ref(o, self.callback)
         ref2 = weakref.ref(o, self.callback)
         del ref1
-        self.assert_(weakref.getweakrefs(o) == [ref2],
+        self.assertTrue(weakref.getweakrefs(o) == [ref2],
                      "list of refs does not match")
 
         o = C()
         ref1 = weakref.ref(o, self.callback)
         ref2 = weakref.ref(o, self.callback)
         del ref2
-        self.assert_(weakref.getweakrefs(o) == [ref1],
+        self.assertTrue(weakref.getweakrefs(o) == [ref1],
                      "list of refs does not match")
 
         del ref1
-        self.assert_(weakref.getweakrefs(o) == [],
+        self.assertTrue(weakref.getweakrefs(o) == [],
                      "list of refs not cleared")
 
         # assumes ints do not support weakrefs
-        self.assert_(weakref.getweakrefs(1) == [],
+        self.assertTrue(weakref.getweakrefs(1) == [],
                      "list of refs does not match for int")
 
     def test_newstyle_number_ops(self):
@@ -344,8 +344,8 @@
             pass
         f = F(2.0)
         p = weakref.proxy(f)
-        self.assert_(p + 1.0 == 3.0)
-        self.assert_(1.0 + p == 3.0)  # this used to SEGV
+        self.assertTrue(p + 1.0 == 3.0)
+        self.assertTrue(1.0 + p == 3.0)  # this used to SEGV
 
     def test_callbacks_protected(self):
         # Callbacks protected from already-set exceptions?
@@ -598,7 +598,7 @@
         c.wr = weakref.ref(d, callback)     # this won't trigger
         d.wr = weakref.ref(callback, d.cb)  # ditto
         external_wr = weakref.ref(callback, safe_callback)  # but this will
-        self.assert_(external_wr() is callback)
+        self.assertTrue(external_wr() is callback)
 
         # The weakrefs attached to c and d should get cleared, so that
         # C.cb is never called.  But external_wr isn't part of the cyclic
@@ -681,12 +681,12 @@
                 return super().__call__()
         o = Object("foo")
         mr = MyRef(o, value=24)
-        self.assert_(mr() is o)
-        self.assert_(mr.called)
+        self.assertTrue(mr() is o)
+        self.assertTrue(mr.called)
         self.assertEqual(mr.value, 24)
         del o
-        self.assert_(mr() is None)
-        self.assert_(mr.called)
+        self.assertTrue(mr() is None)
+        self.assertTrue(mr.called)
 
     def test_subclass_refs_dont_replace_standard_refs(self):
         class MyRef(weakref.ref):
@@ -694,16 +694,16 @@
         o = Object(42)
         r1 = MyRef(o)
         r2 = weakref.ref(o)
-        self.assert_(r1 is not r2)
+        self.assertTrue(r1 is not r2)
         self.assertEqual(weakref.getweakrefs(o), [r2, r1])
         self.assertEqual(weakref.getweakrefcount(o), 2)
         r3 = MyRef(o)
         self.assertEqual(weakref.getweakrefcount(o), 3)
         refs = weakref.getweakrefs(o)
         self.assertEqual(len(refs), 3)
-        self.assert_(r2 is refs[0])
-        self.assert_(r1 in refs[1:])
-        self.assert_(r3 in refs[1:])
+        self.assertTrue(r2 is refs[0])
+        self.assertTrue(r1 in refs[1:])
+        self.assertTrue(r3 in refs[1:])
 
     def test_subclass_refs_dont_conflate_callbacks(self):
         class MyRef(weakref.ref):
@@ -711,10 +711,10 @@
         o = Object(42)
         r1 = MyRef(o, id)
         r2 = MyRef(o, str)
-        self.assert_(r1 is not r2)
+        self.assertTrue(r1 is not r2)
         refs = weakref.getweakrefs(o)
-        self.assert_(r1 in refs)
-        self.assert_(r2 in refs)
+        self.assertTrue(r1 in refs)
+        self.assertTrue(r2 in refs)
 
     def test_subclass_refs_with_slots(self):
         class MyRef(weakref.ref):
@@ -731,7 +731,7 @@
         self.assertEqual(r.slot1, "abc")
         self.assertEqual(r.slot2, "def")
         self.assertEqual(r.meth(), "abcdef")
-        self.failIf(hasattr(r, "__dict__"))
+        self.assertFalse(hasattr(r, "__dict__"))
 
     def test_subclass_refs_with_cycle(self):
         # Bug #3110
@@ -796,7 +796,7 @@
         dict, objects = self.make_weak_valued_dict()
         for o in objects:
             self.assertEqual(weakref.getweakrefcount(o), 1)
-            self.assert_(o is dict[o.arg],
+            self.assertTrue(o is dict[o.arg],
                          "wrong object returned by weak dict!")
         items1 = list(dict.items())
         items2 = list(dict.copy().items())
@@ -825,9 +825,9 @@
         #
         dict, objects = self.make_weak_keyed_dict()
         for o in objects:
-            self.assert_(weakref.getweakrefcount(o) == 1,
+            self.assertTrue(weakref.getweakrefcount(o) == 1,
                          "wrong number of weak references to %r!" % o)
-            self.assert_(o.arg is dict[o],
+            self.assertTrue(o.arg is dict[o],
                          "wrong object returned by weak dict!")
         items1 = dict.items()
         items2 = dict.copy().items()
@@ -836,15 +836,15 @@
         del items1, items2
         self.assertEqual(len(dict), self.COUNT)
         del objects[0]
-        self.assert_(len(dict) == (self.COUNT - 1),
+        self.assertTrue(len(dict) == (self.COUNT - 1),
                      "deleting object did not cause dictionary update")
         del objects, o
-        self.assert_(len(dict) == 0,
+        self.assertTrue(len(dict) == 0,
                      "deleting the keys did not clear the dictionary")
         o = Object(42)
         dict[o] = "What is the meaning of the universe?"
-        self.assert_(o in dict)
-        self.assert_(34 not in dict)
+        self.assertTrue(o in dict)
+        self.assertTrue(34 not in dict)
 
     def test_weak_keyed_iters(self):
         dict, objects = self.make_weak_keyed_dict()
@@ -856,8 +856,8 @@
         objects2 = list(objects)
         for wr in refs:
             ob = wr()
-            self.assert_(ob in dict)
-            self.assert_(ob in dict)
+            self.assertTrue(ob in dict)
+            self.assertTrue(ob in dict)
             self.assertEqual(ob.arg, dict[ob])
             objects2.remove(ob)
         self.assertEqual(len(objects2), 0)
@@ -867,8 +867,8 @@
         self.assertEqual(len(list(dict.keyrefs())), len(objects))
         for wr in dict.keyrefs():
             ob = wr()
-            self.assert_(ob in dict)
-            self.assert_(ob in dict)
+            self.assertTrue(ob in dict)
+            self.assertTrue(ob in dict)
             self.assertEqual(ob.arg, dict[ob])
             objects2.remove(ob)
         self.assertEqual(len(objects2), 0)
@@ -968,15 +968,15 @@
         k, v = weakdict.popitem()
         self.assertEqual(len(weakdict), 1)
         if k is key1:
-            self.assert_(v is value1)
+            self.assertTrue(v is value1)
         else:
-            self.assert_(v is value2)
+            self.assertTrue(v is value2)
         k, v = weakdict.popitem()
         self.assertEqual(len(weakdict), 0)
         if k is key1:
-            self.assert_(v is value1)
+            self.assertTrue(v is value1)
         else:
-            self.assert_(v is value2)
+            self.assertTrue(v is value2)
 
     def test_weak_valued_dict_popitem(self):
         self.check_popitem(weakref.WeakValueDictionary,
@@ -987,21 +987,21 @@
                            C(), "value 1", C(), "value 2")
 
     def check_setdefault(self, klass, key, value1, value2):
-        self.assert_(value1 is not value2,
+        self.assertTrue(value1 is not value2,
                      "invalid test"
                      " -- value parameters must be distinct objects")
         weakdict = klass()
         o = weakdict.setdefault(key, value1)
-        self.assert_(o is value1)
-        self.assert_(key in weakdict)
-        self.assert_(weakdict.get(key) is value1)
-        self.assert_(weakdict[key] is value1)
+        self.assertTrue(o is value1)
+        self.assertTrue(key in weakdict)
+        self.assertTrue(weakdict.get(key) is value1)
+        self.assertTrue(weakdict[key] is value1)
 
         o = weakdict.setdefault(key, value2)
-        self.assert_(o is value1)
-        self.assert_(key in weakdict)
-        self.assert_(weakdict.get(key) is value1)
-        self.assert_(weakdict[key] is value1)
+        self.assertTrue(o is value1)
+        self.assertTrue(key in weakdict)
+        self.assertTrue(weakdict.get(key) is value1)
+        self.assertTrue(weakdict[key] is value1)
 
     def test_weak_valued_dict_setdefault(self):
         self.check_setdefault(weakref.WeakValueDictionary,
@@ -1020,17 +1020,17 @@
         weakdict.update(dict)
         self.assertEqual(len(weakdict), len(dict))
         for k in weakdict.keys():
-            self.assert_(k in dict,
+            self.assertTrue(k in dict,
                          "mysterious new key appeared in weak dict")
             v = dict.get(k)
-            self.assert_(v is weakdict[k])
-            self.assert_(v is weakdict.get(k))
+            self.assertTrue(v is weakdict[k])
+            self.assertTrue(v is weakdict.get(k))
         for k in dict.keys():
-            self.assert_(k in weakdict,
+            self.assertTrue(k in weakdict,
                          "original key disappeared in weak dict")
             v = dict[k]
-            self.assert_(v is weakdict[k])
-            self.assert_(v is weakdict.get(k))
+            self.assertTrue(v is weakdict[k])
+            self.assertTrue(v is weakdict.get(k))
 
     def test_weak_valued_dict_update(self):
         self.check_update(weakref.WeakValueDictionary,
@@ -1060,7 +1060,7 @@
         self.assertEqual(len(d), 2)
         del d['something']
         self.assertEqual(len(d), 1)
-        self.assert_(list(d.items()) == [('something else', o2)])
+        self.assertTrue(list(d.items()) == [('something else', o2)])
 
     def test_weak_keyed_bad_delitem(self):
         d = weakref.WeakKeyDictionary()
diff --git a/Lib/test/test_weakset.py b/Lib/test/test_weakset.py
index 4d54576..651efe2 100644
--- a/Lib/test/test_weakset.py
+++ b/Lib/test/test_weakset.py
@@ -33,7 +33,7 @@
         for method in dir(set):
             if method == 'test_c_api' or method.startswith('_'):
                 continue
-            self.assert_(method in weaksetmethods,
+            self.assertTrue(method in weaksetmethods,
                          "WeakSet missing method " + method)
 
     def test_new_or_init(self):
@@ -49,9 +49,9 @@
         for c in self.letters:
             self.assertEqual(c in self.s, c in self.d)
         self.assertRaises(TypeError, self.s.__contains__, [[]])
-        self.assert_(self.obj in self.fs)
+        self.assertTrue(self.obj in self.fs)
         del self.obj
-        self.assert_(ustr('F') not in self.fs)
+        self.assertTrue(ustr('F') not in self.fs)
 
     def test_union(self):
         u = self.s.union(self.items2)
@@ -81,8 +81,8 @@
             self.assertEqual(self.s.intersection(C(self.items2)), x)
 
     def test_isdisjoint(self):
-        self.assert_(self.s.isdisjoint(WeakSet(self.items2)))
-        self.assert_(not self.s.isdisjoint(WeakSet(self.letters)))
+        self.assertTrue(self.s.isdisjoint(WeakSet(self.items2)))
+        self.assertTrue(not self.s.isdisjoint(WeakSet(self.letters)))
 
     def test_and(self):
         i = self.s.intersection(self.items2)
@@ -118,19 +118,19 @@
     def test_sub_and_super(self):
         pl, ql, rl = map(lambda s: [ustr(c) for c in s], ['ab', 'abcde', 'def'])
         p, q, r = map(WeakSet, (pl, ql, rl))
-        self.assert_(p < q)
-        self.assert_(p <= q)
-        self.assert_(q <= q)
-        self.assert_(q > p)
-        self.assert_(q >= p)
-        self.failIf(q < r)
-        self.failIf(q <= r)
-        self.failIf(q > r)
-        self.failIf(q >= r)
-        self.assert_(set('a').issubset('abc'))
-        self.assert_(set('abc').issuperset('a'))
-        self.failIf(set('a').issubset('cbs'))
-        self.failIf(set('cbs').issuperset('a'))
+        self.assertTrue(p < q)
+        self.assertTrue(p <= q)
+        self.assertTrue(q <= q)
+        self.assertTrue(q > p)
+        self.assertTrue(q >= p)
+        self.assertFalse(q < r)
+        self.assertFalse(q <= r)
+        self.assertFalse(q > r)
+        self.assertFalse(q >= r)
+        self.assertTrue(set('a').issubset('abc'))
+        self.assertTrue(set('abc').issuperset('a'))
+        self.assertFalse(set('a').issubset('cbs'))
+        self.assertFalse(set('cbs').issuperset('a'))
 
     def test_gc(self):
         # Create a nest of cycles to exercise overall ref count check
@@ -148,7 +148,7 @@
         s=H()
         f=set()
         f.add(s)
-        self.assert_(s in f)
+        self.assertTrue(s in f)
         f.remove(s)
         f.add(s)
         f.discard(s)
@@ -183,79 +183,79 @@
     def test_add(self):
         x = ustr('Q')
         self.s.add(x)
-        self.assert_(x in self.s)
+        self.assertTrue(x in self.s)
         dup = self.s.copy()
         self.s.add(x)
         self.assertEqual(self.s, dup)
         self.assertRaises(TypeError, self.s.add, [])
         self.fs.add(Foo())
-        self.assert_(len(self.fs) == 1)
+        self.assertTrue(len(self.fs) == 1)
         self.fs.add(self.obj)
-        self.assert_(len(self.fs) == 1)
+        self.assertTrue(len(self.fs) == 1)
 
     def test_remove(self):
         x = ustr('a')
         self.s.remove(x)
-        self.assert_(x not in self.s)
+        self.assertTrue(x not in self.s)
         self.assertRaises(KeyError, self.s.remove, x)
         self.assertRaises(TypeError, self.s.remove, [])
 
     def test_discard(self):
         a, q = ustr('a'), ustr('Q')
         self.s.discard(a)
-        self.assert_(a not in self.s)
+        self.assertTrue(a not in self.s)
         self.s.discard(q)
         self.assertRaises(TypeError, self.s.discard, [])
 
     def test_pop(self):
         for i in range(len(self.s)):
             elem = self.s.pop()
-            self.assert_(elem not in self.s)
+            self.assertTrue(elem not in self.s)
         self.assertRaises(KeyError, self.s.pop)
 
     def test_update(self):
         retval = self.s.update(self.items2)
         self.assertEqual(retval, None)
         for c in (self.items + self.items2):
-            self.assert_(c in self.s)
+            self.assertTrue(c in self.s)
         self.assertRaises(TypeError, self.s.update, [[]])
 
     def test_update_set(self):
         self.s.update(set(self.items2))
         for c in (self.items + self.items2):
-            self.assert_(c in self.s)
+            self.assertTrue(c in self.s)
 
     def test_ior(self):
         self.s |= set(self.items2)
         for c in (self.items + self.items2):
-            self.assert_(c in self.s)
+            self.assertTrue(c in self.s)
 
     def test_intersection_update(self):
         retval = self.s.intersection_update(self.items2)
         self.assertEqual(retval, None)
         for c in (self.items + self.items2):
             if c in self.items2 and c in self.items:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(TypeError, self.s.intersection_update, [[]])
 
     def test_iand(self):
         self.s &= set(self.items2)
         for c in (self.items + self.items2):
             if c in self.items2 and c in self.items:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_difference_update(self):
         retval = self.s.difference_update(self.items2)
         self.assertEqual(retval, None)
         for c in (self.items + self.items2):
             if c in self.items and c not in self.items2:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(TypeError, self.s.difference_update, [[]])
         self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
 
@@ -263,27 +263,27 @@
         self.s -= set(self.items2)
         for c in (self.items + self.items2):
             if c in self.items and c not in self.items2:
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_symmetric_difference_update(self):
         retval = self.s.symmetric_difference_update(self.items2)
         self.assertEqual(retval, None)
         for c in (self.items + self.items2):
             if (c in self.items) ^ (c in self.items2):
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
         self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
 
     def test_ixor(self):
         self.s ^= set(self.items2)
         for c in (self.items + self.items2):
             if (c in self.items) ^ (c in self.items2):
-                self.assert_(c in self.s)
+                self.assertTrue(c in self.s)
             else:
-                self.assert_(c not in self.s)
+                self.assertTrue(c not in self.s)
 
     def test_inplace_on_self(self):
         t = self.s.copy()
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index 3b314dd..fd28852 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -53,7 +53,7 @@
         # Set the default value for this key.
         SetValue(root_key, test_key_name, REG_SZ, "Default value")
         key = CreateKey(root_key, test_key_name)
-        self.assert_(key.handle != 0)
+        self.assertTrue(key.handle != 0)
         # Create a sub-key
         sub_key = CreateKey(key, subkeystr)
         # Give the sub-key some named values
diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py
index cfadfbd..438d8ec 100755
--- a/Lib/test/test_wsgiref.py
+++ b/Lib/test/test_wsgiref.py
@@ -151,7 +151,7 @@
             start_response("200 OK", ('Content-Type','text/plain'))
             return ["Hello, world!"]
         out, err = run_amock(validator(bad_app))
-        self.failUnless(out.endswith(
+        self.assertTrue(out.endswith(
             b"A server error occurred.  Please contact the administrator."
         ))
         self.assertEqual(
@@ -166,7 +166,7 @@
             s(b"200 OK", [(b"Content-Type", b"text/plain; charset=utf-8")])
             return [b"data"]
         out, err = run_amock(validator(bad_app))
-        self.failUnless(out.endswith(
+        self.assertTrue(out.endswith(
             b"A server error occurred.  Please contact the administrator."
         ))
         self.assertEqual(
@@ -181,7 +181,7 @@
                 ])
             return [b"data"]
         out, err = run_amock(validator(app))
-        self.failUnless(err.endswith('"GET / HTTP/1.0" 200 4\n'))
+        self.assertTrue(err.endswith('"GET / HTTP/1.0" 200 4\n'))
         ver = sys.version.split()[0].encode('ascii')
         self.assertEqual(
                 b"HTTP/1.0 200 OK\r\n"
@@ -210,16 +210,16 @@
         env = {}
         util.setup_testing_defaults(env)
         if isinstance(value,StringIO):
-            self.failUnless(isinstance(env[key],StringIO))
+            self.assertTrue(isinstance(env[key],StringIO))
         elif isinstance(value,BytesIO):
-            self.failUnless(isinstance(env[key],BytesIO))
+            self.assertTrue(isinstance(env[key],BytesIO))
         else:
             self.assertEqual(env[key],value)
 
         # Check existing value
         env = {key:alt}
         util.setup_testing_defaults(env)
-        self.failUnless(env[key] is alt)
+        self.assertTrue(env[key] is alt)
 
     def checkCrossDefault(self,key,value,**kw):
         util.setup_testing_defaults(kw)
@@ -246,15 +246,15 @@
         compare_generic_iter(make_it,match)
 
         it = make_it()
-        self.failIf(it.filelike.closed)
+        self.assertFalse(it.filelike.closed)
 
         for item in it:
             pass
 
-        self.failIf(it.filelike.closed)
+        self.assertFalse(it.filelike.closed)
 
         it.close()
-        self.failUnless(it.filelike.closed)
+        self.assertTrue(it.filelike.closed)
 
 
     def testSimpleShifts(self):
@@ -354,14 +354,14 @@
             "TE Trailers Transfer-Encoding Upgrade"
         ).split():
             for alt in hop, hop.title(), hop.upper(), hop.lower():
-                self.failUnless(util.is_hop_by_hop(alt))
+                self.assertTrue(util.is_hop_by_hop(alt))
 
         # Not comprehensive, just a few random header names
         for hop in (
             "Accept Cache-Control Date Pragma Trailer Via Warning"
         ).split():
             for alt in hop, hop.title(), hop.upper(), hop.lower():
-                self.failIf(util.is_hop_by_hop(alt))
+                self.assertFalse(util.is_hop_by_hop(alt))
 
 class HeaderTests(TestCase):
 
@@ -372,17 +372,17 @@
         self.assertEqual(Headers(test[:]).keys(), ['x'])
         self.assertEqual(Headers(test[:]).values(), ['y'])
         self.assertEqual(Headers(test[:]).items(), test)
-        self.failIf(Headers(test).items() is test)  # must be copy!
+        self.assertFalse(Headers(test).items() is test)  # must be copy!
 
         h=Headers([])
         del h['foo']   # should not raise an error
 
         h['Foo'] = 'bar'
         for m in h.__contains__, h.get, h.get_all, h.__getitem__:
-            self.failUnless(m('foo'))
-            self.failUnless(m('Foo'))
-            self.failUnless(m('FOO'))
-            self.failIf(m('bar'))
+            self.assertTrue(m('foo'))
+            self.assertTrue(m('Foo'))
+            self.assertTrue(m('FOO'))
+            self.assertFalse(m('bar'))
 
         self.assertEqual(h['foo'],'bar')
         h['foo'] = 'baz'
@@ -438,7 +438,7 @@
             h.get("content-disposition"))
 
         del h['content-disposition']
-        self.assert_(b'content-disposition' not in h)
+        self.assertTrue(b'content-disposition' not in h)
 
 
 class ErrorHandler(BaseCGIHandler):
@@ -486,7 +486,7 @@
             if k not in empty:
                 self.assertEqual(env[k],v)
         for k,v in empty.items():
-            self.failUnless(k in env)
+            self.assertTrue(k in env)
 
     def testEnviron(self):
         h = TestHandler(X="Y")
@@ -499,7 +499,7 @@
         h = BaseCGIHandler(None,None,None,{})
         h.setup_environ()
         for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors':
-            self.assert_(key in h.environ)
+            self.assertTrue(key in h.environ)
 
     def testScheme(self):
         h=TestHandler(HTTPS="on"); h.setup_environ()
@@ -586,7 +586,7 @@
             "\r\n%s" % (h.error_status,len(h.error_body),h.error_body)
             ).encode("iso-8859-1"))
 
-        self.failUnless("AssertionError" in h.stderr.getvalue())
+        self.assertTrue("AssertionError" in h.stderr.getvalue())
 
     def testErrorAfterOutput(self):
         MSG = "Some output has been sent"
@@ -599,7 +599,7 @@
         self.assertEqual(h.stdout.getvalue(),
             ("Status: 200 OK\r\n"
             "\r\n"+MSG).encode("iso-8859-1"))
-        self.failUnless("AssertionError" in h.stderr.getvalue())
+        self.assertTrue("AssertionError" in h.stderr.getvalue())
 
 
     def testHeaderFormats(self):
@@ -638,7 +638,7 @@
                     if proto=="HTTP/0.9":
                         self.assertEqual(h.stdout.getvalue(),b"")
                     else:
-                        self.failUnless(
+                        self.assertTrue(
                             re.match((stdpat%(version,sw)).encode("iso-8859-1"),
                                 h.stdout.getvalue()),
                             ((stdpat%(version,sw)).encode("iso-8859-1"),
diff --git a/Lib/test/test_xdrlib.py b/Lib/test/test_xdrlib.py
index 11a44ff..073448c 100644
--- a/Lib/test/test_xdrlib.py
+++ b/Lib/test/test_xdrlib.py
@@ -30,15 +30,15 @@
 
         self.assertEqual(up.unpack_int(), 42)
         self.assertEqual(up.unpack_uint(), 9)
-        self.assert_(up.unpack_bool() is True)
+        self.assertTrue(up.unpack_bool() is True)
 
         # remember position
         pos = up.get_position()
-        self.assert_(up.unpack_bool() is False)
+        self.assertTrue(up.unpack_bool() is False)
 
         # rewind and unpack again
         up.set_position(pos)
-        self.assert_(up.unpack_bool() is False)
+        self.assertTrue(up.unpack_bool() is False)
 
         self.assertEqual(up.unpack_uhyper(), 45)
         self.assertAlmostEqual(up.unpack_float(), 1.9)
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index d4e8122..7bcb6ba 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -63,21 +63,21 @@
     def test_cmp_datetime_DateTime(self):
         now = datetime.datetime.now()
         dt = xmlrpclib.DateTime(now.timetuple())
-        self.assert_(dt == now)
-        self.assert_(now == dt)
+        self.assertTrue(dt == now)
+        self.assertTrue(now == dt)
         then = now + datetime.timedelta(seconds=4)
-        self.assert_(then >= dt)
-        self.assert_(dt < then)
+        self.assertTrue(then >= dt)
+        self.assertTrue(dt < then)
 
     def test_bug_1164912 (self):
         d = xmlrpclib.DateTime()
         ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,),
                                             methodresponse=True))
-        self.assert_(isinstance(new_d.value, str))
+        self.assertTrue(isinstance(new_d.value, str))
 
         # Check that the output of dumps() is still an 8-bit string
         s = xmlrpclib.dumps((new_d,), methodresponse=True)
-        self.assert_(isinstance(s, str))
+        self.assertTrue(isinstance(s, str))
 
     def test_newstyle_class(self):
         class T(object):
@@ -171,7 +171,7 @@
         # private methods
         self.assertRaises(AttributeError,
                           xmlrpc.server.resolve_dotted_attribute, str, '__add')
-        self.assert_(xmlrpc.server.resolve_dotted_attribute(str, 'title'))
+        self.assertTrue(xmlrpc.server.resolve_dotted_attribute(str, 'title'))
 
 class DateTimeTestCase(unittest.TestCase):
     def test_default(self):
@@ -473,7 +473,7 @@
         self.assertRaises(AttributeError,
                           xmlrpc.server.resolve_dotted_attribute, str, '__add')
 
-        self.assert_(xmlrpc.server.resolve_dotted_attribute(str, 'title'))
+        self.assertTrue(xmlrpc.server.resolve_dotted_attribute(str, 'title'))
         # Get the test to run faster by sending a request with test_simple1.
         # This avoids waiting for the socket timeout.
         self.test_simple1()
diff --git a/Lib/test/test_xmlrpc_net.py b/Lib/test/test_xmlrpc_net.py
index f6ebbf0..56b74b2 100644
--- a/Lib/test/test_xmlrpc_net.py
+++ b/Lib/test/test_xmlrpc_net.py
@@ -33,7 +33,7 @@
             delta = dt1 - dt0
         # The difference between the system time here and the system
         # time on the server should not be too big.
-        self.assert_(delta.days <= 1)
+        self.assertTrue(delta.days <= 1)
 
 
 def test_main():
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 4b6d825..82602c1 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -57,9 +57,9 @@
         lines = directory.splitlines()
         self.assertEquals(len(lines), 4) # Number of files + header
 
-        self.assert_('File Name' in lines[0])
-        self.assert_('Modified' in lines[0])
-        self.assert_('Size' in lines[0])
+        self.assertTrue('File Name' in lines[0])
+        self.assertTrue('Modified' in lines[0])
+        self.assertTrue('Size' in lines[0])
 
         fn, date, time, size = lines[1].split()
         self.assertEquals(fn, 'another.name')
@@ -69,17 +69,17 @@
         # Check the namelist
         names = zipfp.namelist()
         self.assertEquals(len(names), 3)
-        self.assert_(TESTFN in names)
-        self.assert_("another.name" in names)
-        self.assert_("strfile" in names)
+        self.assertTrue(TESTFN in names)
+        self.assertTrue("another.name" in names)
+        self.assertTrue("strfile" in names)
 
         # Check infolist
         infos = zipfp.infolist()
         names = [ i.filename for i in infos ]
         self.assertEquals(len(names), 3)
-        self.assert_(TESTFN in names)
-        self.assert_("another.name" in names)
-        self.assert_("strfile" in names)
+        self.assertTrue(TESTFN in names)
+        self.assertTrue("another.name" in names)
+        self.assertTrue("strfile" in names)
         for i in infos:
             self.assertEquals(i.file_size, len(self.data))
 
@@ -138,11 +138,11 @@
         data = b""
         for info in infos:
             data += zipfp.open(info).read()
-        self.assert_(data == b"foobar" or data == b"barfoo")
+        self.assertTrue(data == b"foobar" or data == b"barfoo")
         data = b""
         for info in infos:
             data += zipfp.read(info)
-        self.assert_(data == b"foobar" or data == b"barfoo")
+        self.assertTrue(data == b"foobar" or data == b"barfoo")
         zipfp.close()
 
     def zipRandomOpenTest(self, f, compression):
@@ -439,9 +439,9 @@
         lines = directory.splitlines()
         self.assertEquals(len(lines), 4) # Number of files + header
 
-        self.assert_('File Name' in lines[0])
-        self.assert_('Modified' in lines[0])
-        self.assert_('Size' in lines[0])
+        self.assertTrue('File Name' in lines[0])
+        self.assertTrue('Modified' in lines[0])
+        self.assertTrue('Size' in lines[0])
 
         fn, date, time, size = lines[1].split()
         self.assertEquals(fn, 'another.name')
@@ -451,17 +451,17 @@
         # Check the namelist
         names = zipfp.namelist()
         self.assertEquals(len(names), 3)
-        self.assert_(TESTFN in names)
-        self.assert_("another.name" in names)
-        self.assert_("strfile" in names)
+        self.assertTrue(TESTFN in names)
+        self.assertTrue("another.name" in names)
+        self.assertTrue("strfile" in names)
 
         # Check infolist
         infos = zipfp.infolist()
         names = [ i.filename for i in infos ]
         self.assertEquals(len(names), 3)
-        self.assert_(TESTFN in names)
-        self.assert_("another.name" in names)
-        self.assert_("strfile" in names)
+        self.assertTrue(TESTFN in names)
+        self.assertTrue("another.name" in names)
+        self.assertTrue("strfile" in names)
         for i in infos:
             self.assertEquals(i.file_size, len(self.data))
 
@@ -511,8 +511,8 @@
         zipfp.writepy(fn)
 
         bn = os.path.basename(fn)
-        self.assert_(bn not in zipfp.namelist())
-        self.assert_(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist())
+        self.assertTrue(bn not in zipfp.namelist())
+        self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist())
         zipfp.close()
 
 
@@ -524,8 +524,8 @@
         zipfp.writepy(fn, "testpackage")
 
         bn = "%s/%s"%("testpackage", os.path.basename(fn))
-        self.assert_(bn not in zipfp.namelist())
-        self.assert_(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist())
+        self.assertTrue(bn not in zipfp.namelist())
+        self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist())
         zipfp.close()
 
     def testWritePythonPackage(self):
@@ -537,8 +537,8 @@
 
         # Check for a couple of modules at different levels of the hieararchy
         names = zipfp.namelist()
-        self.assert_('email/__init__.pyo' in names or 'email/__init__.pyc' in names)
-        self.assert_('email/mime/text.pyo' in names or 'email/mime/text.pyc' in names)
+        self.assertTrue('email/__init__.pyo' in names or 'email/__init__.pyc' in names)
+        self.assertTrue('email/mime/text.pyo' in names or 'email/mime/text.pyc' in names)
 
     def testWritePythonDirectory(self):
         os.mkdir(TESTFN2)
@@ -559,9 +559,9 @@
             zipfp.writepy(TESTFN2)
 
             names = zipfp.namelist()
-            self.assert_('mod1.pyc' in names or 'mod1.pyo' in names)
-            self.assert_('mod2.pyc' in names or 'mod2.pyo' in names)
-            self.assert_('mod2.txt' not in names)
+            self.assertTrue('mod1.pyc' in names or 'mod1.pyo' in names)
+            self.assertTrue('mod2.pyc' in names or 'mod2.pyo' in names)
+            self.assertTrue('mod2.txt' not in names)
 
         finally:
             shutil.rmtree(TESTFN2)
@@ -598,7 +598,7 @@
         except IOError:
             self.fail('Could not append data to a non-existent zip file.')
 
-        self.assert_(os.path.exists(TESTFN))
+        self.assertTrue(os.path.exists(TESTFN))
 
         zf = zipfile.ZipFile(TESTFN, 'r')
         self.assertEqual(zf.read(filename), content)
@@ -627,19 +627,19 @@
         with open(TESTFN, "w") as fp:
             fp.write("this is not a legal zip file\n")
         chk = zipfile.is_zipfile(TESTFN)
-        self.assert_(not chk)
+        self.assertTrue(not chk)
         # - passing a file object
         with open(TESTFN, "rb") as fp:
             chk = zipfile.is_zipfile(fp)
-            self.assert_(not chk)
+            self.assertTrue(not chk)
         # - passing a file-like object
         fp = io.BytesIO()
         fp.write(b"this is not a legal zip file\n")
         chk = zipfile.is_zipfile(fp)
-        self.assert_(not chk)
+        self.assertTrue(not chk)
         fp.seek(0,0)
         chk = zipfile.is_zipfile(fp)
-        self.assert_(not chk)
+        self.assertTrue(not chk)
 
     def testIsZipValidFile(self):
         # This test checks that the is_zipfile function correctly identifies
@@ -650,21 +650,21 @@
         zipf.writestr("foo.txt", b"O, for a Muse of Fire!")
         zipf.close()
         chk = zipfile.is_zipfile(TESTFN)
-        self.assert_(chk)
+        self.assertTrue(chk)
         # - passing a file object
         with open(TESTFN, "rb") as fp:
             chk = zipfile.is_zipfile(fp)
-            self.assert_(chk)
+            self.assertTrue(chk)
             fp.seek(0,0)
             zip_contents = fp.read()
         # - passing a file-like object
         fp = io.BytesIO()
         fp.write(zip_contents)
         chk = zipfile.is_zipfile(fp)
-        self.assert_(chk)
+        self.assertTrue(chk)
         fp.seek(0,0)
         chk = zipfile.is_zipfile(fp)
-        self.assert_(chk)
+        self.assertTrue(chk)
 
     def testNonExistentFileRaisesIOError(self):
         # make sure we don't raise an AttributeError when a partially-constructed
diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py
index f41deaf..5d163c7 100644
--- a/Lib/test/test_zipimport.py
+++ b/Lib/test/test_zipimport.py
@@ -287,7 +287,7 @@
             z.close()
             zi = zipimport.zipimporter(TEMP_ZIP)
             self.assertEquals(data, zi.get_data(name))
-            self.assert_('zipimporter object' in repr(zi))
+            self.assertTrue('zipimporter object' in repr(zi))
         finally:
             z.close()
             os.remove(TEMP_ZIP)
@@ -369,7 +369,7 @@
 
             s = io.StringIO()
             print_tb(tb, 1, s)
-            self.failUnless(s.getvalue().endswith(raise_src))
+            self.assertTrue(s.getvalue().endswith(raise_src))
         else:
             raise AssertionError("This ought to be impossible")
 
diff --git a/Lib/test/test_zipimport_support.py b/Lib/test/test_zipimport_support.py
index 3f4cd3f..94a65fc 100644
--- a/Lib/test/test_zipimport_support.py
+++ b/Lib/test/test_zipimport_support.py
@@ -187,7 +187,7 @@
                 print ("Expected line", expected)
                 print ("Got stdout:")
                 print (data)
-            self.assert_(expected in data)
+            self.assertTrue(expected in data)
             zip_name, run_name = _make_test_zip(d, "test_zip",
                                                 script_name, '__main__.py')
             exit_code, data = _run_python(zip_name)
@@ -196,7 +196,7 @@
                 print ("Expected line", expected)
                 print ("Got stdout:")
                 print (data)
-            self.assert_(expected in data)
+            self.assertTrue(expected in data)
 
     def test_pdb_issue4201(self):
         test_src = textwrap.dedent("""\
@@ -211,13 +211,13 @@
             p = _spawn_python(script_name)
             p.stdin.write(b'l\n')
             data = _kill_python(p).decode()
-            self.assert_(script_name in data)
+            self.assertTrue(script_name in data)
             zip_name, run_name = _make_test_zip(d, "test_zip",
                                                 script_name, '__main__.py')
             p = _spawn_python(zip_name)
             p.stdin.write(b'l\n')
             data = _kill_python(p).decode()
-            self.assert_(run_name in data)
+            self.assertTrue(run_name in data)
 
 
 def test_main():
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
index 71f5ecf..3718ca7 100644
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -10,7 +10,7 @@
     # checksum test cases
     def test_crc32start(self):
         self.assertEqual(zlib.crc32(b""), zlib.crc32(b"", 0))
-        self.assert_(zlib.crc32(b"abc", 0xffffffff))
+        self.assertTrue(zlib.crc32(b"abc", 0xffffffff))
 
     def test_crc32empty(self):
         self.assertEqual(zlib.crc32(b"", 0), 0)
@@ -19,7 +19,7 @@
 
     def test_adler32start(self):
         self.assertEqual(zlib.adler32(b""), zlib.adler32(b"", 1))
-        self.assert_(zlib.adler32(b"abc", 0xffffffff))
+        self.assertTrue(zlib.adler32(b"abc", 0xffffffff))
 
     def test_adler32empty(self):
         self.assertEqual(zlib.adler32(b"", 0), 0)
@@ -111,8 +111,8 @@
         y1 = dco.decompress(x1 + x2)
         y2 = dco.flush()
         self.assertEqual(data, y1 + y2)
-        self.assert_(isinstance(dco.unconsumed_tail, bytes))
-        self.assert_(isinstance(dco.unused_data, bytes))
+        self.assertTrue(isinstance(dco.unconsumed_tail, bytes))
+        self.assertTrue(isinstance(dco.unused_data, bytes))
 
     def test_compressoptions(self):
         # specify lots of options to compressobj()
@@ -157,7 +157,7 @@
 
         decombuf = zlib.decompress(combuf)
         # Test type of return value
-        self.assert_(isinstance(decombuf, bytes))
+        self.assertTrue(isinstance(decombuf, bytes))
 
         self.assertEqual(data, decombuf)
 
@@ -208,7 +208,7 @@
         while cb:
             #max_length = 1 + len(cb)//10
             chunk = dco.decompress(cb, dcx)
-            self.failIf(len(chunk) > dcx,
+            self.assertFalse(len(chunk) > dcx,
                     'chunk too big (%d>%d)' % (len(chunk), dcx))
             bufs.append(chunk)
             cb = dco.unconsumed_tail
@@ -233,7 +233,7 @@
         while cb:
             max_length = 1 + len(cb)//10
             chunk = dco.decompress(cb, max_length)
-            self.failIf(len(chunk) > max_length,
+            self.assertFalse(len(chunk) > max_length,
                         'chunk too big (%d>%d)' % (len(chunk),max_length))
             bufs.append(chunk)
             cb = dco.unconsumed_tail
@@ -242,7 +242,7 @@
         else:
             while chunk:
                 chunk = dco.decompress('', max_length)
-                self.failIf(len(chunk) > max_length,
+                self.assertFalse(len(chunk) > max_length,
                             'chunk too big (%d>%d)' % (len(chunk),max_length))
                 bufs.append(chunk)
         self.assertEqual(data, b''.join(bufs), 'Wrong data retrieved')
@@ -316,7 +316,7 @@
         # caused a core dump.)
 
         co = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
-        self.failUnless(co.flush())  # Returns a zlib header
+        self.assertTrue(co.flush())  # Returns a zlib header
         dco = zlib.decompressobj()
         self.assertEqual(dco.flush(), b"") # Returns nothing
 
@@ -356,7 +356,7 @@
             data = HAMLET_SCENE
             comp = zlib.compress(data)
             # Test type of return value
-            self.assert_(isinstance(comp, bytes))
+            self.assertTrue(isinstance(comp, bytes))
 
             d0 = zlib.decompressobj()
             bufs0 = []