I have some basic setup/teardown code that I want to reuse in a whole bunch of unit tests. So I got the bright idea of creating some derived classes to avoid repeating code in every test class.
In so doing, I received two strange errors. One, I cannot solve. Here is the unsolvable one:
AttributeError: 'TestDesktopRootController' object has no attribute '_testMethodName'
Here is my base class:
import unittest
import twill
import cherrypy
from cherrypy._cpwsgi import CPWSGIApp
class BaseControllerTest(unittest.TestCase):
    def __init__(self):
        self.controller = None
    def setUp(self):
        app = cherrypy.Application(self.controller)
        wsgi = CPWSGIApp(app)
        twill.add_wsgi_intercept('localhost', 8080, lambda : wsgi)
    def tearDown(self):
        twill.remove_wsgi_intercept('localhost', 8080)
And here is my derived class:
import twill
from base_controller_test import BaseControllerTest
class TestMyController(BaseControllerTest):
    def __init__(self, args):
        self.controller = MyController()
        BaseControllerTest.__init__(self)
    def test_root(self):
        script = "find 'Contacts'"
        twill.execute_string(script, initial_url='http://localhost:8080/')
The other strange error is:
TypeError: __init__() takes exactly 1 argument (2 given)
The "solution" to that was to add the word "args" to my __init__ function in the derived class.  Is there any way to avoid that?
Remember, I have two errors in this one.
 
     
    