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

Deprecate makeSuite, findTestCases, and getTestCaseNames. Scheduled for removal in Python 3.13.
This commit is contained in:
Erlend Egeberg Aasland 2021-09-15 20:33:31 +02:00 committed by GitHub
parent 9d76d28867
commit ff6d2cc55a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 69 additions and 4 deletions

View file

@ -352,6 +352,21 @@ Deprecated
:class:`~unittest.IsolatedAsyncioTestCase` test methods (other than the :class:`~unittest.IsolatedAsyncioTestCase` test methods (other than the
default ``None`` value), is now deprecated. 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 Removed
======= =======

View file

@ -426,9 +426,14 @@ class TestSupport(unittest.TestCase):
extra=extra, extra=extra,
not_exported=not_exported) not_exported=not_exported)
extra = {'TextTestResult', 'installHandler'} extra = {
'TextTestResult',
'findTestCases',
'getTestCaseNames',
'installHandler',
'makeSuite',
}
not_exported = {'load_tests', "TestProgram", "BaseTestSuite"} not_exported = {'load_tests', "TestProgram", "BaseTestSuite"}
support.check__all__(self, support.check__all__(self,
unittest, unittest,
("unittest.result", "unittest.case", ("unittest.result", "unittest.case",

View file

@ -52,6 +52,7 @@ __all__ = ['TestResult', 'TestCase', 'IsolatedAsyncioTestCase', 'TestSuite',
'addModuleCleanup'] 'addModuleCleanup']
# Expose obsolete functions for backwards compatibility # 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']) __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
__unittest = True __unittest = True
@ -60,8 +61,7 @@ from .result import TestResult
from .case import (addModuleCleanup, TestCase, FunctionTestCase, SkipTest, skip, from .case import (addModuleCleanup, TestCase, FunctionTestCase, SkipTest, skip,
skipIf, skipUnless, expectedFailure) skipIf, skipUnless, expectedFailure)
from .suite import BaseTestSuite, TestSuite from .suite import BaseTestSuite, TestSuite
from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames, from .loader import TestLoader, defaultTestLoader
findTestCases)
from .main import TestProgram, main from .main import TestProgram, main
from .runner import TextTestRunner, TextTestResult from .runner import TextTestRunner, TextTestResult
from .signals import installHandler, registerResult, removeResult, removeHandler from .signals import installHandler, registerResult, removeResult, removeHandler
@ -70,6 +70,37 @@ from .signals import installHandler, registerResult, removeResult, removeHandler
# deprecated # deprecated
_TextTestResult = TextTestResult _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 # There are no tests here, so don't try to run anything discovered from
# introspecting the symbols (e.g. FunctionTestCase). Instead, all our # introspecting the symbols (e.g. FunctionTestCase). Instead, all our
# tests come from within unittest.test. # tests come from within unittest.test.

View file

@ -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.