diff -r 3be0ff8caea0 Lib/unittest/case.py --- a/Lib/unittest/case.py Sun Jun 22 16:44:47 2014 -0400 +++ b/Lib/unittest/case.py Sat Jun 28 12:14:50 2014 -0400 @@ -119,9 +119,8 @@ test_item.__unittest_expecting_failure__ = True return test_item - def testBaseClass(base_class): - base_class.__testbase__ = True + base_class.__unittest_base_class__ = True return base_class diff -r 3be0ff8caea0 Lib/unittest/loader.py --- a/Lib/unittest/loader.py Sun Jun 22 16:44:47 2014 -0400 +++ b/Lib/unittest/loader.py Sat Jun 28 12:14:50 2014 -0400 @@ -64,7 +64,7 @@ raise TypeError("Test cases should not be derived from " "TestSuite. Maybe you meant to derive from " "TestCase?") - if testCaseClass.__dict__.get('__testbase__', False): + if testCaseClass.__dict__.get('__unittest_base_class__', False): raise TypeError("Base test class should not be run.") testCaseNames = self.getTestCaseNames(testCaseClass) @@ -79,7 +79,9 @@ for name in dir(module): obj = getattr(module, name) - if isinstance(obj, type) and issubclass(obj, case.TestCase) and not obj.__dict__.get('__testbase__', False): + if isinstance(obj, type) and \ + issubclass(obj, case.TestCase) and \ + (not obj.__dict__.get('__unittest_base_class__', False)): tests.append(self.loadTestsFromTestCase(obj)) load_tests = getattr(module, 'load_tests', None) diff -r 3be0ff8caea0 Lib/unittest/test/baseclassdecorator.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/unittest/test/baseclassdecorator.py Sat Jun 28 12:14:50 2014 -0400 @@ -0,0 +1,20 @@ +import unittest + +@unittest.testBaseClass +class TestBaseDecoratorBase(unittest.TestCase): + def setUp(self): + self.is_base_class = True + + def test_base_class_should_not_run(self): + """ + This test will fail if run by the base class but will pass + if run by the child class. + """ + self.assertFalse(self.is_base_class) + +class TestBaseDecoratorChild(TestBaseDecoratorBase): + def setUp(self): + self.is_base_class = False + +if __name__ == "__main__": + unittest.main() diff -r 3be0ff8caea0 Lib/unittest/test/test_case.py --- a/Lib/unittest/test/test_case.py Sun Jun 22 16:44:47 2014 -0400 +++ b/Lib/unittest/test/test_case.py Sat Jun 28 12:14:50 2014 -0400 @@ -1571,12 +1571,12 @@ def test_base_class_should_not_run(self): # Issue #14534: Add method to mark unittest.TestCases as "do not run" - import unittest.test.testmock.baseclassdecorator + from unittest.test import baseclassdecorator result = unittest.TestResult() loader = unittest.TestLoader() - suite = loader.loadTestsFromModule(unittest.test.testmock.baseclassdecorator) + suite = loader.loadTestsFromModule(baseclassdecorator) suite.run(result) self.assertEqual(result.testsRun, 1) diff -r 3be0ff8caea0 Lib/unittest/test/testmock/baseclassdecorator.py --- a/Lib/unittest/test/testmock/baseclassdecorator.py Sun Jun 22 16:44:47 2014 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -import unittest - -@unittest.testBaseClass -class TestBaseDecoratorBase(unittest.TestCase): - def setUp(self): - self.is_base_class = True - - def test_base_class_should_not_run(self): - """ - This test will fail if run by the base class but will pass - if run by the child class. - """ - self.assertFalse(self.is_base_class) - -class TestBaseDecoratorChild(TestBaseDecoratorBase): - def setUp(self): - self.is_base_class = False - -if __name__ == "__main__": - unittest.main()