|
1 | 1 | import unittest
|
2 | 2 | import sys
|
| 3 | +import functools |
3 | 4 |
|
4 | 5 | from test.support.import_helper import import_fresh_module
|
5 | 6 |
|
@@ -45,21 +46,26 @@ def load_tests(loader, tests, pattern):
|
45 | 46 | for cls in test_classes:
|
46 | 47 | cls.__name__ += suffix
|
47 | 48 | cls.__qualname__ += suffix
|
48 |
| - @classmethod |
49 |
| - def setUpClass(cls_, module=module): |
50 |
| - cls_._save_sys_modules = sys.modules.copy() |
51 |
| - sys.modules[TESTS] = module |
52 |
| - sys.modules['datetime'] = module.datetime_module |
53 |
| - if hasattr(module, '_pydatetime'): |
54 |
| - sys.modules['_pydatetime'] = module._pydatetime |
55 |
| - sys.modules['_strptime'] = module._strptime |
56 |
| - @classmethod |
57 |
| - def tearDownClass(cls_): |
58 |
| - sys.modules.clear() |
59 |
| - sys.modules.update(cls_._save_sys_modules) |
60 |
| - cls.setUpClass = setUpClass |
61 |
| - cls.tearDownClass = tearDownClass |
62 |
| - tests.addTests(loader.loadTestsFromTestCase(cls)) |
| 49 | + |
| 50 | + @functools.wraps(cls, updated=()) |
| 51 | + class Wrapper(cls): |
| 52 | + @classmethod |
| 53 | + def setUpClass(cls_, module=module): |
| 54 | + cls_._save_sys_modules = sys.modules.copy() |
| 55 | + sys.modules[TESTS] = module |
| 56 | + sys.modules['datetime'] = module.datetime_module |
| 57 | + if hasattr(module, '_pydatetime'): |
| 58 | + sys.modules['_pydatetime'] = module._pydatetime |
| 59 | + sys.modules['_strptime'] = module._strptime |
| 60 | + super().setUpClass() |
| 61 | + |
| 62 | + @classmethod |
| 63 | + def tearDownClass(cls_): |
| 64 | + super().tearDownClass() |
| 65 | + sys.modules.clear() |
| 66 | + sys.modules.update(cls_._save_sys_modules) |
| 67 | + |
| 68 | + tests.addTests(loader.loadTestsFromTestCase(Wrapper)) |
63 | 69 | return tests
|
64 | 70 |
|
65 | 71 |
|
|
0 commit comments