diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index db51e6d..b058b49 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -218,10 +218,6 @@
         """Returns both the test method name and first line of its docstring.
 
         If no docstring is given, only returns the method name.
-
-        This method overrides unittest.TestCase.shortDescription(), which
-        only returns the first line of the docstring, obscuring the name
-        of the test upon failure.
         """
         desc = str(self)
         doc_first_line = None
@@ -384,8 +380,17 @@
            If called with callableObj omitted or None, will return a
            context object used like this::
 
-                with self.assertRaises(some_error_class):
+                with self.assertRaises(SomeException):
                     do_something()
+
+           The context manager keeps a reference to the exception as
+           the exc_value attribute. This allows you to inspect the
+           exception after the assertion::
+
+               with self.assertRaises(SomeException) as cm:
+                   do_something()
+               the_exception = cm.exc_value
+               self.assertEquals(the_exception.error_code, 3)
         """
         context = _AssertRaisesContext(excClass, self)
         if callableObj is None:
@@ -733,6 +738,11 @@
 
         Raises with an error message listing which elements of expected_seq
         are missing from actual_seq and vice versa if any.
+
+        Duplicate elements are ignored when comparing *expected_seq* and
+        *actual_seq*. It is the equivalent of ``assertEqual(set(expected),
+        set(actual))`` but it works with sequences of unhashable objects as
+        well.
         """
         try:
             expected = set(expected_seq)
