Skip to content

Commit b1cb30e

Browse files
authored
gh-104835: Remove unittest's deprecated getTestCaseNames, makeSuite, findTestCases (#104836)
1 parent ded5f1f commit b1cb30e

File tree

7 files changed

+30
-88
lines changed

7 files changed

+30
-88
lines changed

Doc/whatsnew/3.13.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,20 @@ Removed
118118
* Remove support for using :class:`pathlib.Path` objects as context managers.
119119
This functionality was deprecated and made a no-op in Python 3.9.
120120

121+
* Removed the following :mod:`unittest` functions, deprecated in Python 3.11:
122+
123+
* :func:`!unittest.findTestCases`
124+
* :func:`!unittest.makeSuite`
125+
* :func:`!unittest.getTestCaseNames`
126+
127+
Use :class:`~unittest.TestLoader` methods instead:
128+
129+
* :meth:`unittest.TestLoader.loadTestsFromModule`
130+
* :meth:`unittest.TestLoader.loadTestsFromTestCase`
131+
* :meth:`unittest.TestLoader.getTestCaseNames`
132+
133+
(Contributed by Hugo van Kemenade in :gh:`104835`.)
134+
121135
* :pep:`594`: Remove the :mod:`!cgi`` and :mod:`!cgitb` modules,
122136
deprecated in Python 3.11.
123137

Lib/test/test_support.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,7 @@ def test_check__all__(self):
430430

431431
extra = {
432432
'TextTestResult',
433-
'findTestCases',
434-
'getTestCaseNames',
435433
'installHandler',
436-
'makeSuite',
437434
}
438435
not_exported = {'load_tests', "TestProgram", "BaseTestSuite"}
439436
support.check__all__(self,

Lib/test/test_unittest/test_loader.py

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,39 +1470,6 @@ def test(self): pass
14701470
def reverse_three_way_cmp(a, b):
14711471
return unittest.util.three_way_cmp(b, a)
14721472

1473-
def test_getTestCaseNames(self):
1474-
with self.assertWarns(DeprecationWarning) as w:
1475-
tests = unittest.getTestCaseNames(self.MyTestCase,
1476-
prefix='check', sortUsing=self.reverse_three_way_cmp,
1477-
testNamePatterns=None)
1478-
self.assertEqual(w.filename, __file__)
1479-
self.assertEqual(tests, ['check_2', 'check_1'])
1480-
1481-
def test_makeSuite(self):
1482-
with self.assertWarns(DeprecationWarning) as w:
1483-
suite = unittest.makeSuite(self.MyTestCase,
1484-
prefix='check', sortUsing=self.reverse_three_way_cmp,
1485-
suiteClass=self.MyTestSuite)
1486-
self.assertEqual(w.filename, __file__)
1487-
self.assertIsInstance(suite, self.MyTestSuite)
1488-
expected = self.MyTestSuite([self.MyTestCase('check_2'),
1489-
self.MyTestCase('check_1')])
1490-
self.assertEqual(suite, expected)
1491-
1492-
def test_findTestCases(self):
1493-
m = types.ModuleType('m')
1494-
m.testcase_1 = self.MyTestCase
1495-
1496-
with self.assertWarns(DeprecationWarning) as w:
1497-
suite = unittest.findTestCases(m,
1498-
prefix='check', sortUsing=self.reverse_three_way_cmp,
1499-
suiteClass=self.MyTestSuite)
1500-
self.assertEqual(w.filename, __file__)
1501-
self.assertIsInstance(suite, self.MyTestSuite)
1502-
expected = [self.MyTestSuite([self.MyTestCase('check_2'),
1503-
self.MyTestCase('check_1')])]
1504-
self.assertEqual(list(suite), expected)
1505-
15061473

15071474
if __name__ == "__main__":
15081475
unittest.main()

Lib/unittest/__init__.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ def testMultiply(self):
5151
'registerResult', 'removeResult', 'removeHandler',
5252
'addModuleCleanup', 'doModuleCleanups', 'enterModuleContext']
5353

54-
# Expose obsolete functions for backwards compatibility
55-
# bpo-5846: Deprecated in Python 3.11, scheduled for removal in Python 3.13.
56-
__all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
57-
5854
__unittest = True
5955

6056
from .result import TestResult
@@ -67,7 +63,6 @@ def testMultiply(self):
6763
from .runner import TextTestRunner, TextTestResult
6864
from .signals import installHandler, registerResult, removeResult, removeHandler
6965
# IsolatedAsyncioTestCase will be imported lazily.
70-
from .loader import makeSuite, getTestCaseNames, findTestCases
7166

7267

7368
# Lazy import of IsolatedAsyncioTestCase from .async_case

Lib/unittest/loader.py

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -437,47 +437,3 @@ def _find_test_path(self, full_path, pattern):
437437

438438

439439
defaultTestLoader = TestLoader()
440-
441-
442-
# These functions are considered obsolete for long time.
443-
# They will be removed in Python 3.13.
444-
445-
def _makeLoader(prefix, sortUsing, suiteClass=None, testNamePatterns=None):
446-
loader = TestLoader()
447-
loader.sortTestMethodsUsing = sortUsing
448-
loader.testMethodPrefix = prefix
449-
loader.testNamePatterns = testNamePatterns
450-
if suiteClass:
451-
loader.suiteClass = suiteClass
452-
return loader
453-
454-
def getTestCaseNames(testCaseClass, prefix, sortUsing=util.three_way_cmp, testNamePatterns=None):
455-
import warnings
456-
warnings.warn(
457-
"unittest.getTestCaseNames() is deprecated and will be removed in Python 3.13. "
458-
"Please use unittest.TestLoader.getTestCaseNames() instead.",
459-
DeprecationWarning, stacklevel=2
460-
)
461-
return _makeLoader(prefix, sortUsing, testNamePatterns=testNamePatterns).getTestCaseNames(testCaseClass)
462-
463-
def makeSuite(testCaseClass, prefix='test', sortUsing=util.three_way_cmp,
464-
suiteClass=suite.TestSuite):
465-
import warnings
466-
warnings.warn(
467-
"unittest.makeSuite() is deprecated and will be removed in Python 3.13. "
468-
"Please use unittest.TestLoader.loadTestsFromTestCase() instead.",
469-
DeprecationWarning, stacklevel=2
470-
)
471-
return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(
472-
testCaseClass)
473-
474-
def findTestCases(module, prefix='test', sortUsing=util.three_way_cmp,
475-
suiteClass=suite.TestSuite):
476-
import warnings
477-
warnings.warn(
478-
"unittest.findTestCases() is deprecated and will be removed in Python 3.13. "
479-
"Please use unittest.TestLoader.loadTestsFromModule() instead.",
480-
DeprecationWarning, stacklevel=2
481-
)
482-
return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(\
483-
module)

Misc/NEWS.d/3.11.0a1.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3483,9 +3483,9 @@ Improved reprs of :mod:`threading` synchronization objects:
34833483
Deprecated the following :mod:`unittest` functions, scheduled for removal in
34843484
Python 3.13:
34853485

3486-
* :func:`~unittest.findTestCases`
3487-
* :func:`~unittest.makeSuite`
3488-
* :func:`~unittest.getTestCaseNames`
3486+
* :func:`~!unittest.findTestCases`
3487+
* :func:`~!unittest.makeSuite`
3488+
* :func:`~!unittest.getTestCaseNames`
34893489

34903490
Use :class:`~unittest.TestLoader` methods instead:
34913491

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Removed the following :mod:`unittest` functions, deprecated in Python 3.11:
2+
3+
* :func:`!unittest.findTestCases`
4+
* :func:`!unittest.makeSuite`
5+
* :func:`!unittest.getTestCaseNames`
6+
7+
Use :class:`~unittest.TestLoader` methods instead:
8+
9+
* :meth:`unittest.TestLoader.loadTestsFromModule`
10+
* :meth:`unittest.TestLoader.loadTestsFromTestCase`
11+
* :meth:`unittest.TestLoader.getTestCaseNames`
12+
13+
Patch by Hugo van Kemenade.

0 commit comments

Comments
 (0)