У меня есть базовый код установки/разрыва, который я хочу повторно использовать во всей группе модульных тестов. Поэтому я получил яркую идею создания некоторых производных классов, чтобы избежать повторения кода в каждом тестовом классе.
При этом я получил две странные ошибки. Во-первых, я не могу решить. Вот неразрешимый:
AttributeError: 'TestDesktopRootController' object has no attribute '_testMethodName'
Вот мой базовый класс:
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)
И вот мой производный класс:
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/')
Другая странная ошибка:
TypeError: __init__() takes exactly 1 argument (2 given)
"Решение" - это добавить слово "args" к моей функции __init__
в производном классе. Есть ли способ избежать этого?
Помните, что у меня две ошибки в этом.