I have a pretty large test suite and I decorated some of the test_* functions. Now I can\'t call them by ./test.py MySqlTestCase.test_foo_double
, python3.2 comp
I think the problem is that the decorated function doesn't have the same name and, also, it doesn't satisfy the pattern to be considered a test method.
Using functools.wrap
to decorate decorator
should fix your problem. More information here.
This is a simple way of solving this issue.
from functools import wraps
def your_decorator(func):
@wraps(func)
def wrapper(self):
#Do Whatever
return func(self)
return wrapper
class YourTest(APITestCase):
@your_decorator
def example(self):
#Do your thing
Based on this post:
You can do it this way:
def decorator(test):
def wrapper(self):
# do something interesting
test(self)
# do something interesting
wrapper.__name__ = test.__name__
return wrapper
This solution has two advantages over method with @functools.wrap
:
Thanks to the second feature of this solution, it is possible to create decorators for many tests.
This help me:
from functools import wraps
...
@wraps(procedure_name)
def decorator(test):