I'm using Python 2.6, with unittest2 imported as unittest. I'm writing a test suite for a web application. There is a subclass of TestCase for each basic page type. One thing that's in common between all the pages is that every page must have a valid copyright notice. It seems like the logical thing would be to put the common test(s) in a subclass unittest.TestCase and have all my real test cases derive from that:
class CommonTestCase(unittest.TestCase): def test_copyright(self): self.assert_(find copyright notice in DOM tree) class HomepageTestCase(CommonTestCase): def setUp(self): self.url = "http://site.com" def test_whatever(self): self.assert_(whatever) This works fine as far as HomepageTestCase running test_copyright() and test_whatever(). The problem is that CommonTestCase *also* runs test_copyright(), which fails because there's no setUp(), and thus no retrieved page for it to work on. The hack that I came up with is: class CommonTestCase(unittest.TestCase): def test_copyright(self): if self.__class__.__name__ == 'CommonTestCase': return self.assert_(find copyright notice in DOM tree) which works, but it's ugly. It also counts CommonTestCase.test_copyright() as passing, which messes up the statistics. Is there a cleaner way to define some common test methods which all of my test cases can inherit, without having them be run in the base class? -- http://mail.python.org/mailman/listinfo/python-list