Issue an actual PendingDeprecationWarning for the TestCase.fail* methods.
Document the deprecation.
diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst
index d4ef248..a03982a 100644
--- a/Doc/library/unittest.rst
+++ b/Doc/library/unittest.rst
@@ -613,6 +613,9 @@
       Signal a test failure if *expr* is false; the explanation for the error
       will be *msg* if given, otherwise it will be :const:`None`.
 
+      .. deprecated:: 2.7
+         :meth:`failUnless`.
+
 
    .. method:: assertEqual(first, second[, msg])
                failUnlessEqual(first, second[, msg])
@@ -632,6 +635,9 @@
       .. versionchanged:: 2.7
          Added the automatic calling of type specific equality function.
 
+      .. deprecated:: 2.7
+         :meth:`failUnlessEqual`.
+
 
    .. method:: assertNotEqual(first, second[, msg])
                failIfEqual(first, second[, msg])
@@ -643,6 +649,9 @@
       default value for *msg* can be computed to include representations of both
       *first* and *second*.
 
+      .. deprecated:: 2.7
+         :meth:`failIfEqual`.
+
 
    .. method:: assertAlmostEqual(first, second[, places[, msg]])
                failUnlessAlmostEqual(first, second[, places[, msg]])
@@ -656,6 +665,9 @@
       compare equal, the test will fail with the explanation given by *msg*, or
       :const:`None`.
 
+      .. deprecated:: 2.7
+         :meth:`failUnlessAlmostEqual`.
+
 
    .. method:: assertNotAlmostEqual(first, second[, places[, msg]])
                failIfAlmostEqual(first, second[, places[, msg]])
@@ -669,6 +681,9 @@
       compare equal, the test will fail with the explanation given by *msg*, or
       :const:`None`.
 
+      .. deprecated:: 2.7
+         :meth:`failIfAlmostEqual`.
+
 
    .. method:: assertGreater(first, second, msg=None)
                assertGreaterEqual(first, second, msg=None)
@@ -808,6 +823,9 @@
       .. versionchanged:: 2.7
          Added the ability to use :meth:`assertRaises` as a context manager.
 
+      .. deprecated:: 2.7
+         :meth:`failUnlessRaises`.
+
 
    .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
 
@@ -849,6 +867,9 @@
       This signals a test failure if *expr* is true, with *msg* or :const:`None`
       for the error message.
 
+      .. deprecated:: 2.7
+         :meth:`failIf`.
+
 
    .. method:: fail([msg])
 
diff --git a/Lib/unittest.py b/Lib/unittest.py
index ba6a0f9..9718e86 100644
--- a/Lib/unittest.py
+++ b/Lib/unittest.py
@@ -54,6 +54,7 @@
 import time
 import traceback
 import types
+import warnings
 
 ##############################################################################
 # Exported classes and functions
@@ -574,15 +575,22 @@
     assert_ = assertTrue
 
     # These fail* assertion method names are pending deprecation and will
-    # be a deprecation warning in 3.2; http://bugs.python.org/issue2578
-    failUnlessEqual = assertEqual
-    failIfEqual = assertNotEqual
-    failUnlessAlmostEqual = assertAlmostEqual
-    failIfAlmostEqual = assertNotAlmostEqual
-    failUnless = assertTrue
-    failUnlessRaises = assertRaises
-    failIf = assertFalse
+    # be a DeprecationWarning in 3.2; http://bugs.python.org/issue2578
+    def __deprecate(original_func):
+        def deprecated_func(*args, **kwargs):
+            warnings.warn(
+                'Please use {0} instead.'.format(original_func.__name__),
+                PendingDeprecationWarning, 2)
+            return original_func(*args, **kwargs)
+        return deprecated_func
 
+    failUnlessEqual = __deprecate(assertEqual)
+    failIfEqual = __deprecate(assertNotEqual)
+    failUnlessAlmostEqual = __deprecate(assertAlmostEqual)
+    failIfAlmostEqual = __deprecate(assertNotAlmostEqual)
+    failUnless = __deprecate(assertTrue)
+    failUnlessRaises = __deprecate(assertRaises)
+    failIf = __deprecate(assertFalse)
 
     def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None):
         """An equality assertion for ordered sequences (like lists and tuples).