diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst
index 8936b81..9a72541 100644
--- a/Doc/library/unittest.rst
+++ b/Doc/library/unittest.rst
@@ -114,12 +114,12 @@
 
        def testchoice(self):
            element = random.choice(self.seq)
-           self.assert_(element in self.seq)
+           self.assertTrue(element in self.seq)
 
        def testsample(self):
            self.assertRaises(ValueError, random.sample, self.seq, 20)
            for element in random.sample(self.seq, 5):
-               self.assert_(element in self.seq)
+               self.assertTrue(element in self.seq)
 
    if __name__ == '__main__':
        unittest.main()
@@ -234,14 +234,14 @@
 
    class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
        def runTest(self):
-           self.failUnless(self.widget.size() == (50,50),
-                           'incorrect default size')
+           self.assertEqual(self.widget.size(), (50,50),
+                            'incorrect default size')
 
    class WidgetResizeTestCase(SimpleWidgetTestCase):
        def runTest(self):
            self.widget.resize(100,150)
-           self.failUnless(self.widget.size() == (100,150),
-                           'wrong size after resize')
+           self.assertEqual(self.widget.size(), (100,150),
+                            'wrong size after resize')
 
 If the :meth:`setUp` method raises an exception while the test is running, the
 framework will consider the test to have suffered an error, and the
@@ -282,13 +282,13 @@
            self.widget = None
 
        def testDefaultSize(self):
-           self.failUnless(self.widget.size() == (50,50),
-                           'incorrect default size')
+           self.assertEqual(self.widget.size(), (50,50),
+                            'incorrect default size')
 
        def testResize(self):
            self.widget.resize(100,150)
-           self.failUnless(self.widget.size() == (100,150),
-                           'wrong size after resize')
+           self.assertEqual(self.widget.size(), (100,150),
+                            'wrong size after resize')
 
 Here we have not provided a :meth:`runTest` method, but have instead provided
 two different test methods.  Class instances will now each run one of the
