diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2021-09-17 09:09:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-17 09:09:32 (GMT) |
commit | b2b035a949eff1dc54b5bafe2bc9ce72b4d24438 (patch) | |
tree | 778d425c06b781da36f0518a16cf4f8351564e14 | |
parent | 773319545ba60577bc140aa46eac83b360240b7a (diff) | |
download | cpython-b2b035a949eff1dc54b5bafe2bc9ce72b4d24438.zip cpython-b2b035a949eff1dc54b5bafe2bc9ce72b4d24438.tar.gz cpython-b2b035a949eff1dc54b5bafe2bc9ce72b4d24438.tar.bz2 |
bpo-5846: Fix deprecations for obsolete unittest functions and add tests. (GH-28382)
-rw-r--r-- | Lib/unittest/__init__.py | 31 | ||||
-rw-r--r-- | Lib/unittest/loader.py | 21 | ||||
-rw-r--r-- | Lib/unittest/test/test_loader.py | 47 |
3 files changed, 69 insertions, 30 deletions
diff --git a/Lib/unittest/__init__.py b/Lib/unittest/__init__.py index e318c63..4b18488 100644 --- a/Lib/unittest/__init__.py +++ b/Lib/unittest/__init__.py @@ -66,40 +66,11 @@ from .main import TestProgram, main from .runner import TextTestRunner, TextTestResult from .signals import installHandler, registerResult, removeResult, removeHandler # IsolatedAsyncioTestCase will be imported lazily. +from .loader import makeSuite, getTestCaseNames, findTestCases # 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 diff --git a/Lib/unittest/loader.py b/Lib/unittest/loader.py index ba7105e..a4017b4 100644 --- a/Lib/unittest/loader.py +++ b/Lib/unittest/loader.py @@ -494,6 +494,9 @@ class TestLoader(object): defaultTestLoader = TestLoader() +# These functions are considered obsolete for long time. +# They will be removed in Python 3.13. + def _makeLoader(prefix, sortUsing, suiteClass=None, testNamePatterns=None): loader = TestLoader() loader.sortTestMethodsUsing = sortUsing @@ -504,14 +507,32 @@ def _makeLoader(prefix, sortUsing, suiteClass=None, testNamePatterns=None): return loader def getTestCaseNames(testCaseClass, prefix, sortUsing=util.three_way_cmp, testNamePatterns=None): + import warnings + warnings.warn( + "unittest.getTestCaseNames() is deprecated and will be removed in Python 3.13. " + "Please use unittest.TestLoader.getTestCaseNames() instead.", + DeprecationWarning, stacklevel=2 + ) return _makeLoader(prefix, sortUsing, testNamePatterns=testNamePatterns).getTestCaseNames(testCaseClass) def makeSuite(testCaseClass, prefix='test', sortUsing=util.three_way_cmp, suiteClass=suite.TestSuite): + import warnings + warnings.warn( + "unittest.makeSuite() is deprecated and will be removed in Python 3.13. " + "Please use unittest.TestLoader.loadTestsFromTestCase() instead.", + DeprecationWarning, stacklevel=2 + ) return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase( testCaseClass) def findTestCases(module, prefix='test', sortUsing=util.three_way_cmp, suiteClass=suite.TestSuite): + import warnings + warnings.warn( + "unittest.findTestCases() is deprecated and will be removed in Python 3.13. " + "Please use unittest.TestLoader.loadTestsFromModule() instead.", + DeprecationWarning, stacklevel=2 + ) return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(\ module) diff --git a/Lib/unittest/test/test_loader.py b/Lib/unittest/test/test_loader.py index bc54bf0..90e2081 100644 --- a/Lib/unittest/test/test_loader.py +++ b/Lib/unittest/test/test_loader.py @@ -1591,5 +1591,52 @@ class Test_TestLoader(unittest.TestCase): self.assertEqual(loader.getTestCaseNames(Foo), test_names) +class TestObsoleteFunctions(unittest.TestCase): + class MyTestSuite(unittest.TestSuite): + pass + + class MyTestCase(unittest.TestCase): + def check_1(self): pass + def check_2(self): pass + def test(self): pass + + @staticmethod + def reverse_three_way_cmp(a, b): + return unittest.util.three_way_cmp(b, a) + + def test_getTestCaseNames(self): + with self.assertWarns(DeprecationWarning) as w: + tests = unittest.getTestCaseNames(self.MyTestCase, + prefix='check', sortUsing=self.reverse_three_way_cmp, + testNamePatterns=None) + self.assertEqual(w.warnings[0].filename, __file__) + self.assertEqual(tests, ['check_2', 'check_1']) + + def test_makeSuite(self): + with self.assertWarns(DeprecationWarning) as w: + suite = unittest.makeSuite(self.MyTestCase, + prefix='check', sortUsing=self.reverse_three_way_cmp, + suiteClass=self.MyTestSuite) + self.assertEqual(w.warnings[0].filename, __file__) + self.assertIsInstance(suite, self.MyTestSuite) + expected = self.MyTestSuite([self.MyTestCase('check_2'), + self.MyTestCase('check_1')]) + self.assertEqual(suite, expected) + + def test_findTestCases(self): + m = types.ModuleType('m') + m.testcase_1 = self.MyTestCase + + with self.assertWarns(DeprecationWarning) as w: + suite = unittest.findTestCases(m, + prefix='check', sortUsing=self.reverse_three_way_cmp, + suiteClass=self.MyTestSuite) + self.assertEqual(w.warnings[0].filename, __file__) + self.assertIsInstance(suite, self.MyTestSuite) + expected = [self.MyTestSuite([self.MyTestCase('check_2'), + self.MyTestCase('check_1')])] + self.assertEqual(list(suite), expected) + + if __name__ == "__main__": unittest.main() |