diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst
index ad6d314..564ff72 100644
--- a/Doc/library/unittest.rst
+++ b/Doc/library/unittest.rst
@@ -721,6 +721,11 @@
    Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
    single test.
 
+   .. versionchanged::
+      `TestCase` can be instantiated successfully without providing a method
+      name. This makes it easier to experiment with `TestCase` from the
+      interactive interpreter.
+
    *methodName* defaults to :meth:`runTest`.
 
    :class:`TestCase` instances provide three groups of methods: one group used
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index 004a9f5..0277ac8 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -274,12 +274,17 @@
         """
         self._testMethodName = methodName
         self._outcomeForDoCleanups = None
+        self._testMethodDoc = 'No test'
         try:
             testMethod = getattr(self, methodName)
         except AttributeError:
-            raise ValueError("no such test method in %s: %s" %
-                  (self.__class__, methodName))
-        self._testMethodDoc = testMethod.__doc__
+            if methodName != 'runTest':
+                # we allow instantiation with no explicit method name
+                # but not an *incorrect* or missing method name
+                raise ValueError("no such test method in %s: %s" %
+                      (self.__class__, methodName))
+        else:
+            self._testMethodDoc = testMethod.__doc__
         self._cleanups = []
 
         # Map types to custom assertEqual functions that will compare
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py
index 9a09dfa..1513fbe 100644
--- a/Lib/unittest/test/test_case.py
+++ b/Lib/unittest/test/test_case.py
@@ -77,6 +77,16 @@
 
         self.assertEqual(Test().id()[-13:], '.Test.runTest')
 
+        # test that TestCase can be instantiated with no args
+        # primarily for use at the interactive interpreter
+        test = unittest.TestCase()
+        test.assertEqual(3, 3)
+        with test.assertRaises(test.failureException):
+            test.assertEqual(3, 2)
+
+        with self.assertRaises(AttributeError):
+            test.run()
+
     # "class TestCase([methodName])"
     # ...
     # "Each instance of TestCase will run a single test method: the
diff --git a/Misc/NEWS b/Misc/NEWS
index ec870e7..930b47e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -23,6 +23,9 @@
 Library
 -------
 
+- `unittest.TestCase` can be instantiated without a method name; for simpler
+  exploration from the interactive interpreter.
+
 - Issue #10798: Reject supporting concurrent.futures if the system has too
   few POSIX semaphores.
 
diff --git a/Tools/unittestgui/unittestgui.py b/Tools/unittestgui/unittestgui.py
index 0c48b49..b526646 100644
--- a/Tools/unittestgui/unittestgui.py
+++ b/Tools/unittestgui/unittestgui.py
@@ -276,13 +276,15 @@
         self.test_file_glob_pattern = d.test_file_glob_pattern
 
     def notifyTestsDiscovered(self, test_suite):
+        discovered = test_suite.countTestCases()
         self.runCountVar.set(0)
         self.failCountVar.set(0)
         self.errorCountVar.set(0)
-        self.remainingCountVar.set(test_suite.countTestCases())
+        self.remainingCountVar.set(discovered)
         self.progressBar.setProgressFraction(0.0)
         self.errorListbox.delete(0, tk.END)
-        self.statusVar.set("Discovering tests from %s" % self.directory_to_read)
+        self.statusVar.set("Discovering tests from %s. Found: %s" %
+            (self.directory_to_read, discovered))
         self.stopGoButton['state'] = tk.NORMAL
 
     def createWidgets(self):
