Skip to content

Instantly share code, notes, and snippets.

@ShakeM
Forked from twolfson/README.md
Created October 26, 2018 15:18
Show Gist options
  • Select an option

  • Save ShakeM/11bafcf19076a2c1a46c2c89a2017bbf to your computer and use it in GitHub Desktop.

Select an option

Save ShakeM/11bafcf19076a2c1a46c2c89a2017bbf to your computer and use it in GitHub Desktop.

Revisions

  1. @twolfson twolfson created this gist Feb 23, 2015.
    32 changes: 32 additions & 0 deletions README.md
    Original 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)

    ```