summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/test/test_loader.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2021-09-17 10:33:27 (GMT)
committerGitHub <noreply@github.com>2021-09-17 10:33:27 (GMT)
commitb0a6ede3d0bd6fa4ffe413ab4dfc1059201df25b (patch)
treef370600a4be7de179a40cfb81ade054a1f520b2a /Lib/unittest/test/test_loader.py
parent0361335b80b435ca3694981b41f8269e390eb892 (diff)
downloadcpython-b0a6ede3d0bd6fa4ffe413ab4dfc1059201df25b.zip
cpython-b0a6ede3d0bd6fa4ffe413ab4dfc1059201df25b.tar.gz
cpython-b0a6ede3d0bd6fa4ffe413ab4dfc1059201df25b.tar.bz2
bpo-45162: Remove many old deprecated unittest features (GH-28268)
* "fail*" and "assert*" aliases of TestCase methods. * Broken from start TestCase method assertDictContainsSubset(). * Ignored TestLoader.loadTestsFromModule() parameter use_load_tests. * Old alias _TextTestResult of TextTestResult.
Diffstat (limited to 'Lib/unittest/test/test_loader.py')
-rw-r--r--Lib/unittest/test/test_loader.py147
1 files changed, 7 insertions, 140 deletions
diff --git a/Lib/unittest/test/test_loader.py b/Lib/unittest/test/test_loader.py
index 90e2081..fc0d46e 100644
--- a/Lib/unittest/test/test_loader.py
+++ b/Lib/unittest/test/test_loader.py
@@ -5,25 +5,6 @@ import warnings
import unittest
-# Decorator used in the deprecation tests to reset the warning registry for
-# test isolation and reproducibility.
-def warningregistry(func):
- def wrapper(*args, **kws):
- missing = []
- saved = getattr(warnings, '__warningregistry__', missing).copy()
- try:
- return func(*args, **kws)
- finally:
- if saved is missing:
- try:
- del warnings.__warningregistry__
- except AttributeError:
- pass
- else:
- warnings.__warningregistry__ = saved
- return wrapper
-
-
class Test_TestLoader(unittest.TestCase):
### Basic object tests
@@ -174,9 +155,8 @@ class Test_TestLoader(unittest.TestCase):
self.assertEqual(list(suite), reference)
- # Check that loadTestsFromModule honors (or not) a module
+ # Check that loadTestsFromModule honors a module
# with a load_tests function.
- @warningregistry
def test_loadTestsFromModule__load_tests(self):
m = types.ModuleType('m')
class MyTestCase(unittest.TestCase):
@@ -195,126 +175,13 @@ class Test_TestLoader(unittest.TestCase):
suite = loader.loadTestsFromModule(m)
self.assertIsInstance(suite, unittest.TestSuite)
self.assertEqual(load_tests_args, [loader, suite, None])
- # With Python 3.5, the undocumented and unofficial use_load_tests is
- # ignored (and deprecated).
- load_tests_args = []
- with warnings.catch_warnings(record=False):
- warnings.simplefilter('ignore')
- suite = loader.loadTestsFromModule(m, use_load_tests=False)
- self.assertEqual(load_tests_args, [loader, suite, None])
-
- @warningregistry
- def test_loadTestsFromModule__use_load_tests_deprecated_positional(self):
- m = types.ModuleType('m')
- class MyTestCase(unittest.TestCase):
- def test(self):
- pass
- m.testcase_1 = MyTestCase
-
- load_tests_args = []
- def load_tests(loader, tests, pattern):
- self.assertIsInstance(tests, unittest.TestSuite)
- load_tests_args.extend((loader, tests, pattern))
- return tests
- m.load_tests = load_tests
- # The method still works.
- loader = unittest.TestLoader()
- # use_load_tests=True as a positional argument.
- with warnings.catch_warnings(record=True) as w:
- warnings.simplefilter('always')
- suite = loader.loadTestsFromModule(m, False)
- self.assertIsInstance(suite, unittest.TestSuite)
- # load_tests was still called because use_load_tests is deprecated
- # and ignored.
- self.assertEqual(load_tests_args, [loader, suite, None])
- # We got a warning.
- self.assertIs(w[-1].category, DeprecationWarning)
- self.assertEqual(str(w[-1].message),
- 'use_load_tests is deprecated and ignored')
-
- @warningregistry
- def test_loadTestsFromModule__use_load_tests_deprecated_keyword(self):
- m = types.ModuleType('m')
- class MyTestCase(unittest.TestCase):
- def test(self):
- pass
- m.testcase_1 = MyTestCase
-
- load_tests_args = []
- def load_tests(loader, tests, pattern):
- self.assertIsInstance(tests, unittest.TestSuite)
- load_tests_args.extend((loader, tests, pattern))
- return tests
- m.load_tests = load_tests
- # The method still works.
- loader = unittest.TestLoader()
- with warnings.catch_warnings(record=True) as w:
- warnings.simplefilter('always')
- suite = loader.loadTestsFromModule(m, use_load_tests=False)
- self.assertIsInstance(suite, unittest.TestSuite)
- # load_tests was still called because use_load_tests is deprecated
- # and ignored.
- self.assertEqual(load_tests_args, [loader, suite, None])
- # We got a warning.
- self.assertIs(w[-1].category, DeprecationWarning)
- self.assertEqual(str(w[-1].message),
- 'use_load_tests is deprecated and ignored')
-
- @warningregistry
- def test_loadTestsFromModule__too_many_positional_args(self):
- m = types.ModuleType('m')
- class MyTestCase(unittest.TestCase):
- def test(self):
- pass
- m.testcase_1 = MyTestCase
-
- load_tests_args = []
- def load_tests(loader, tests, pattern):
- self.assertIsInstance(tests, unittest.TestSuite)
- load_tests_args.extend((loader, tests, pattern))
- return tests
- m.load_tests = load_tests
- loader = unittest.TestLoader()
- with self.assertRaises(TypeError) as cm, \
- warnings.catch_warnings(record=True) as w:
- warnings.simplefilter('always')
- loader.loadTestsFromModule(m, False, 'testme.*')
- # We still got the deprecation warning.
- self.assertIs(w[-1].category, DeprecationWarning)
- self.assertEqual(str(w[-1].message),
- 'use_load_tests is deprecated and ignored')
- # We also got a TypeError for too many positional arguments.
- self.assertEqual(type(cm.exception), TypeError)
- self.assertEqual(
- str(cm.exception),
- 'loadTestsFromModule() takes 1 positional argument but 3 were given')
-
- @warningregistry
- def test_loadTestsFromModule__use_load_tests_other_bad_keyword(self):
- m = types.ModuleType('m')
- class MyTestCase(unittest.TestCase):
- def test(self):
- pass
- m.testcase_1 = MyTestCase
- load_tests_args = []
- def load_tests(loader, tests, pattern):
- self.assertIsInstance(tests, unittest.TestSuite)
- load_tests_args.extend((loader, tests, pattern))
- return tests
- m.load_tests = load_tests
- loader = unittest.TestLoader()
- with warnings.catch_warnings():
- warnings.simplefilter('ignore')
- with self.assertRaises(TypeError) as cm:
- loader.loadTestsFromModule(
- m, use_load_tests=False, very_bad=True, worse=False)
- self.assertEqual(type(cm.exception), TypeError)
- # The error message names the first bad argument alphabetically,
- # however use_load_tests (which sorts first) is ignored.
- self.assertEqual(
- str(cm.exception),
- "loadTestsFromModule() got an unexpected keyword argument 'very_bad'")
+ # In Python 3.11, the undocumented and unofficial use_load_tests has
+ # been removed.
+ with self.assertRaises(TypeError):
+ loader.loadTestsFromModule(m, False)
+ with self.assertRaises(TypeError):
+ loader.loadTestsFromModule(m, use_load_tests=False)
def test_loadTestsFromModule__pattern(self):
m = types.ModuleType('m')