|
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 |
|
@@ -39,21 +40,26 @@ def load_tests(loader, tests, pattern):
|
39 | 40 | for cls in test_classes:
|
40 | 41 | cls.__name__ += suffix
|
41 | 42 | cls.__qualname__ += suffix
|
42 |
| - @classmethod |
43 |
| - def setUpClass(cls_, module=module): |
44 |
| - cls_._save_sys_modules = sys.modules.copy() |
45 |
| - sys.modules[TESTS] = module |
46 |
| - sys.modules['datetime'] = module.datetime_module |
47 |
| - if hasattr(module, '_pydatetime'): |
48 |
| - sys.modules['_pydatetime'] = module._pydatetime |
49 |
| - sys.modules['_strptime'] = module._strptime |
50 |
| - @classmethod |
51 |
| - def tearDownClass(cls_): |
52 |
| - sys.modules.clear() |
53 |
| - sys.modules.update(cls_._save_sys_modules) |
54 |
| - cls.setUpClass = setUpClass |
55 |
| - cls.tearDownClass = tearDownClass |
56 |
| - tests.addTests(loader.loadTestsFromTestCase(cls)) |
| 43 | + |
| 44 | + @functools.wraps(cls, updated=()) |
| 45 | + class Wrapper(cls): |
| 46 | + @classmethod |
| 47 | + def setUpClass(cls_, module=module): |
| 48 | + cls_._save_sys_modules = sys.modules.copy() |
| 49 | + sys.modules[TESTS] = module |
| 50 | + sys.modules['datetime'] = module.datetime_module |
| 51 | + if hasattr(module, '_pydatetime'): |
| 52 | + sys.modules['_pydatetime'] = module._pydatetime |
| 53 | + sys.modules['_strptime'] = module._strptime |
| 54 | + super().setUpClass() |
| 55 | + |
| 56 | + @classmethod |
| 57 | + def tearDownClass(cls_): |
| 58 | + super().tearDownClass() |
| 59 | + sys.modules.clear() |
| 60 | + sys.modules.update(cls_._save_sys_modules) |
| 61 | + |
| 62 | + tests.addTests(loader.loadTestsFromTestCase(Wrapper)) |
57 | 63 | return tests
|
58 | 64 |
|
59 | 65 |
|
|
0 commit comments