У меня есть несколько относительно сложных интеграционных тестов в моем коде Python. Я значительно упростил их с помощью специального декоратора и очень доволен результатом. Вот простой пример того, как выглядит мой декоратор:
def specialTest(fn):
def wrapTest(self):
#do some some important stuff
pass
return wrapTest
Вот как может выглядеть тест:
class Test_special_stuff(unittest.TestCase):
@specialTest
def test_something_special(self):
pass
Он отлично работает и без проблем выполняется средством запуска тестов PyCharm. Однако, когда я запускаю тест из командной строки с помощью Nose, он пропускает любой тест с декоратором @specialTest. Я попытался назвать декоратор testSpecial, чтобы он соответствовал правилам по умолчанию, но тогда мой параметр FN не передается.
Как я могу заставить Nose выполнять эти методы тестирования и обрабатывать декоратор так, как он задуман?
Благодаря madjar, я добился этого, изменив структуру кода, чтобы он выглядел так, используя functools.wraps и изменив имя обертки:
from functools import wraps
def specialTest(fn):
@wraps(fn)
def test_wrapper(self,*args,**kwargs):
#do some some important stuff
pass
return test_wrapper
class Test_special_stuff(unittest.TestCase):
@specialTest
def test_something_special(self):
pass