我的测试课程如下:
class MyTestCase(django.test.TestCase):
def setUp(sefl):
# set up stuff common to ALL the tests
@my_test_decorator('arg1')
@my_test_decorator('arg2')
def test_something_1(self):
# run test
def test_something_2(self):
# run test
@my_test_decorator('arg1')
@my_test_decorator('arg2')
def test_something_3(self):
# run test
...
def test_something_N(self):
# run test
现在,@my_test_decorator
是我做的装饰器,它执行内部更改以在运行时设置对测试环境的一些更改,并在测试完成后撤消此类更改,但我需要对特定的测试集执行此操作仅适用于所有情况,并且我希望将设置保持为所有测试,对于特定测试,可能会执行以下操作:
def setUp(self):
# set up stuff common to ALL the tests
tests_to_decorate = ['test_something_1', 'test_something_3']
decorator_args = ['arg1', 'arg2']
if self._testMethodNamein in tests_to_decorate:
method = getattr(self, self._testMethodNamein)
for arg in decorator_args:
method = my_test_decorator(arg)(method)
setattr(self, self._testMethodNamein, method)
我的意思是,不重复整个文件中的装饰器,但似乎测试运行器甚至在实例化测试类之前检索要运行的测试集,因此在__init__
中执行此操作是没有用的或setUp
方法。
如果没有方法可以实现这一目标会很好:
TestCase
子类中拆分测试setUp
setUp
方法的类,让TestCase
子类继承自此类这甚至可能吗?
谢谢! :)