В Python 2.6 декоратор класса определенно подходит. Например, вот довольно общий пример для таких задач:
import inspect
def decallmethods(decorator, prefix='test_'):
def dectheclass(cls):
for name, m in inspect.getmembers(cls, inspect.ismethod):
if name.startswith(prefix):
setattr(cls, name, decorator(m))
return cls
return dectheclass
а сейчас просто
@decallmethods(login_testuser)
class TestCase(object):
def setUp(self):
pass
def test_1(self):
print "test_1()"
def test_2(self):
print "test_2()"
даст вам то, что вы хотите. В Python 2.5 или хуже, синтаксис @decallmethods
не работает для оформления класса, но в противном случае с точно таким же кодом вы можете заменить его следующим оператором справа после конца оператора class TestCase
:
TestCase = decallmethods(login_testuser)(TestCase)