diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst
index a2d4478..61c4308 100644
--- a/Doc/library/unittest.rst
+++ b/Doc/library/unittest.rst
@@ -733,6 +733,9 @@
       compare equal, the test will fail with the explanation given by *msg*, or
       :const:`None`.
 
+      .. versionchanged:: 2.7
+         Objects that compare equal are automatically almost equal.
+
       .. deprecated:: 2.7
          :meth:`failUnlessAlmostEqual`.
 
@@ -749,6 +752,9 @@
       compare equal, the test will fail with the explanation given by *msg*, or
       :const:`None`.
 
+      .. versionchanged:: 2.7
+         Objects that compare equal automatically fail.
+
       .. deprecated:: 2.7
          :meth:`failIfAlmostEqual`.
 
diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst
index 9a3b3e6..6089d33 100644
--- a/Doc/whatsnew/2.7.rst
+++ b/Doc/whatsnew/2.7.rst
@@ -505,6 +505,10 @@
     differences.  :meth:`assertDictContainsSubset` checks whether
     all of the key/value pairs in *first* are found in *second*.
 
+  * :meth:`assertAlmostEqual` and :meth:`assertNotAlmostEqual` short-circuit
+    (automatically pass or fail without checking decimal places) if the objects
+    are equal.
+
   * A new hook, :meth:`addTypeEqualityFunc` takes a type object and a
     function.  The :meth:`assertEqual` method will use the function
     when both of the objects being compared are of the specified type.
diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py
index 5c3921d..2fab7de 100644
--- a/Lib/test/test_unittest.py
+++ b/Lib/test/test_unittest.py
@@ -2989,6 +2989,11 @@
         self.assertRaises(self.failureException,
                           self.assertNotAlmostEqual, 0, .1+.1j, places=0)
 
+        self.assertAlmostEqual(float('inf'), float('inf'))
+        self.assertRaises(self.failureException, self.assertNotAlmostEqual,
+                          float('inf'), float('inf'))
+
+
     def test_assertRaises(self):
         def _raise(e):
             raise e
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index d52bc8d..cac2842 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -457,7 +457,13 @@
 
            Note that decimal places (from zero) are usually not the same
            as significant digits (measured from the most signficant digit).
+
+           If the two objects compare equal then they will automatically
+           compare almost equal.
         """
+        if first == second:
+            # shortcut for ite
+            return
         if round(abs(second-first), places) != 0:
             standardMsg = '%r != %r within %r places' % (first, second, places)
             msg = self._formatMessage(msg, standardMsg)
@@ -470,8 +476,10 @@
 
            Note that decimal places (from zero) are usually not the same
            as significant digits (measured from the most signficant digit).
+
+           Objects that are equal automatically fail.
         """
-        if round(abs(second-first), places) == 0:
+        if (first == second) or round(abs(second-first), places) == 0:
             standardMsg = '%r == %r within %r places' % (first, second, places)
             msg = self._formatMessage(msg, standardMsg)
             raise self.failureException(msg)
