[Python-checkins] bpo-5846: Deprecate obsolete methods in `unittest` (GH-28299)

ambv webhook-mailer at python.org
Wed Sep 15 14:33:39 EDT 2021


https://github.com/python/cpython/commit/ff6d2cc55aac5cc53e331cae145d0cf35ec647b0
commit: ff6d2cc55aac5cc53e331cae145d0cf35ec647b0
branch: main
author: Erlend Egeberg Aasland <erlend.aasland at innova.no>
committer: ambv <lukasz at langa.pl>
date: 2021-09-15T20:33:31+02:00
summary:

bpo-5846: Deprecate obsolete methods in `unittest` (GH-28299)

Deprecate makeSuite, findTestCases, and getTestCaseNames. Scheduled for removal in Python 3.13.

files:
A Misc/NEWS.d/next/Library/2020-05-25-23-58-29.bpo-5846.O9BIfm.rst
M Doc/whatsnew/3.11.rst
M Lib/test/test_support.py
M Lib/unittest/__init__.py

diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index a06a07533e44c..df331ed010f54 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -352,6 +352,21 @@ Deprecated
   :class:`~unittest.IsolatedAsyncioTestCase` test methods (other than the
   default ``None`` value), is now deprecated.
 
+* Deprecated the following :mod:`unittest` functions, scheduled for removal in
+  Python 3.13:
+
+  * :func:`unittest.findTestCases`
+  * :func:`unittest.makeSuite`
+  * :func:`unittest.getTestCaseNames`
+
+  Use :class:`~unittest.TestLoader` method instead:
+
+  * :meth:`unittest.TestLoader.loadTestsFromModule`
+  * :meth:`unittest.TestLoader.loadTestsFromTestCase`
+  * :meth:`unittest.TestLoader.getTestCaseNames`
+
+  (Contributed by Erlend E. Aasland in :issue:`5846`.)
+
 
 Removed
 =======
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 11ca0c2fb2d2f..44fe3348749e8 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -426,9 +426,14 @@ def test_check__all__(self):
                              extra=extra,
                              not_exported=not_exported)
 
-        extra = {'TextTestResult', 'installHandler'}
+        extra = {
+            'TextTestResult',
+            'findTestCases',
+            'getTestCaseNames',
+            'installHandler',
+            'makeSuite',
+        }
         not_exported = {'load_tests', "TestProgram", "BaseTestSuite"}
-
         support.check__all__(self,
                              unittest,
                              ("unittest.result", "unittest.case",
diff --git a/Lib/unittest/__init__.py b/Lib/unittest/__init__.py
index 348dc471f4c3d..e318c635c1bcc 100644
--- a/Lib/unittest/__init__.py
+++ b/Lib/unittest/__init__.py
@@ -52,6 +52,7 @@ def testMultiply(self):
            'addModuleCleanup']
 
 # Expose obsolete functions for backwards compatibility
+# bpo-5846: Deprecated in Python 3.11, scheduled for removal in Python 3.13.
 __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
 
 __unittest = True
@@ -60,8 +61,7 @@ def testMultiply(self):
 from .case import (addModuleCleanup, TestCase, FunctionTestCase, SkipTest, skip,
                    skipIf, skipUnless, expectedFailure)
 from .suite import BaseTestSuite, TestSuite
-from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,
-                     findTestCases)
+from .loader import TestLoader, defaultTestLoader
 from .main import TestProgram, main
 from .runner import TextTestRunner, TextTestResult
 from .signals import installHandler, registerResult, removeResult, removeHandler
@@ -70,6 +70,37 @@ def testMultiply(self):
 # deprecated
 _TextTestResult = TextTestResult
 
+from .loader import (
+    makeSuite as _makeSuite,
+    findTestCases as _findTestCases,
+    getTestCaseNames as _getTestCaseNames,
+)
+
+import warnings
+def makeSuite(*args, **kwargs):
+    warnings.warn(
+        "unittest.makeSuite() is deprecated and will be removed in Python 3.13. "
+        "Please use unittest.TestLoader.loadTestsFromTestCase() instead.",
+        DeprecationWarning, stacklevel=2
+    )
+    return _makeSuite(*args, **kwargs)
+
+def getTestCaseNames(*args, **kwargs):
+    warnings.warn(
+        "unittest.getTestCaseNames() is deprecated and will be removed in Python 3.13. "
+        "Please use unittest.TestLoader.getTestCaseNames() instead.",
+        DeprecationWarning, stacklevel=2
+    )
+    return _getTestCaseNames(*args, **kwargs)
+
+def findTestCases(*args, **kwargs):
+    warnings.warn(
+        "unittest.findTestCases() is deprecated and will be removed in Python 3.13. "
+        "Please use unittest.TestLoader.loadTestsFromModule() instead.",
+        DeprecationWarning, stacklevel=2
+    )
+    return _findTestCases(*args, **kwargs)
+
 # There are no tests here, so don't try to run anything discovered from
 # introspecting the symbols (e.g. FunctionTestCase). Instead, all our
 # tests come from within unittest.test.
diff --git a/Misc/NEWS.d/next/Library/2020-05-25-23-58-29.bpo-5846.O9BIfm.rst b/Misc/NEWS.d/next/Library/2020-05-25-23-58-29.bpo-5846.O9BIfm.rst
new file mode 100644
index 0000000000000..556c54d0d1718
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-05-25-23-58-29.bpo-5846.O9BIfm.rst
@@ -0,0 +1,14 @@
+Deprecated the following :mod:`unittest` functions, scheduled for removal in
+Python 3.13:
+
+* :func:`~unittest.findTestCases`
+* :func:`~unittest.makeSuite`
+* :func:`~unittest.getTestCaseNames`
+
+Use :class:`~unittest.TestLoader` methods instead:
+
+* :meth:`unittest.TestLoader.loadTestsFromModule`
+* :meth:`unittest.TestLoader.loadTestsFromTestCase`
+* :meth:`unittest.TestLoader.getTestCaseNames`
+
+Patch by Erlend E. Aasland.



More information about the Python-checkins mailing list