2012-09-26 21 views
5

Tengo el siguiente decorador en una clase base:importación sólo una clase de método estático

class BaseTests(TestCase): 
    @staticmethod 
    def check_time(self, fn): 
     @wraps(fn) 
     def test_wrapper(*args,**kwargs): 
      # do checks ... 
     return test_wrapper 

Y la siguiente clase que hereda de 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 ... 

me gustaría usar el decorador en SpecificTest como antes, sin tener que usar BaseTests.check_time, porque en el código original tienen nombres largos, y tengo que usarlo en muchos lugares. ¿Algunas ideas?

EDIT: decidí hacer check_time una función independiente en el archivo BaseTests, y simplemente importar

from path.base_posting import BaseTests, check_time 

Respuesta

9

En pocas palabras

check_time = BaseTests.check_time 

en su segundo módulo:


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 ... 

Es posible que también desee reconsiderar hacer de check_time un método estático, ya que parece que su caso de uso lo emplea más como una función independiente que como un método estático.

+1

agradable, gracias. Estaba buscando una solución que importe el método directamente, pero su sugerencia también funciona. – Alex

Cuestiones relacionadas