问题
I have the following decorator in a base class:
class BaseTests(TestCase):
@staticmethod
def check_time(self, fn):
@wraps(fn)
def test_wrapper(*args,**kwargs):
# do checks ...
return test_wrapper
And the following class inheriting from BaseTests:
from path.base_posting import BaseTests
from path.base_posting.BaseTests import check_time # THIS LINE DOES NOT WORK!
class SpecificTest(BaseTests):
@check_time # use the decorator
def test_post(self):
# do testing ...
I would like to use the decorator in SpecificTest as above, without having to use BaseTests.check_time, because in the original code they have long names, and I have to use it in many places. Any ideas?
EDIT: I decided to make check_time an independent function in BaseTests file, and simply import
from path.base_posting import BaseTests, check_time
回答1:
Simply put
check_time = BaseTests.check_time
in your second module:
from module_paths.base_posting import BaseTests
check_time = BaseTests.check_time
class SpecificTest(BaseTests):
@check_time # use the decorator
def test_post(self):
# do testing ...
You may also want to reconsider making check_time a staticmethod, since it appears your use case employs it more as a stand-alone function than as a staticmethod.
来源:https://stackoverflow.com/questions/12603541/import-only-a-class-static-method