-
-
Save ShakeM/11bafcf19076a2c1a46c2c89a2017bbf to your computer and use it in GitHub Desktop.
Revisions
-
twolfson created this gist
Feb 23, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,32 @@ In some cases for Python unit tests, we want to automatically perform `setUp` methods in as declared in a base class. However, we still want `setUp` to work as per normal in the subclass. The following code will proxy the new `setUp` function to run it's base class' and the new one. ```python # Define a common test base for starting servers class MyBaseTestCase(unittest.TestCase): @classmethod def setUpClass(cls): """On inherited classes, run our `setUp` method""" # Inspired via http://stackoverflow.com/questions/1323455/python-unit-test-with-base-and-sub-class/17696807#17696807 if cls is not MyBaseTestCase and cls.setUp is not MyBaseTestCase.setUp: orig_setUp = cls.setUp def setUpOverride(self, *args, **kwargs): MyBaseTestCase.setUp(self) return orig_setUp(self, *args, **kwargs) cls.setUp = setUpOverride def setUp(self): """Do some custom setup""" self.abc = True class ItemCreateTest(MyBaseTestCase): def setUp(self): """Do more custom setup""" self.def = True def test_verify_both_setups_run(self): """Test for our current usage""" self.assertEqual(self.abc, True) self.assertEqual(self.def, True) ```