Нос игнорирует тест с настраиваемым декоратором

У меня есть несколько относительно сложных интеграционных тестов в моем коде 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
25
задан Cory Klein 31 January 2018 в 17:57
поделиться