裝飾器@staticmethod、@classmethod
https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/14/README.html
class A(object):
def foo(self,x):
print "executing foo(%s,%s)"%(self,x)
@classmethod
def class_foo(cls,x):
print "executing class_foo(%s,%s)"%(cls,x)
@staticmethod
def static_foo(x):
print "executing static_foo(%s)"%x
a=A()
a.class_foo(1)
A.class_foo(1)
a. static_foo(1)
A. static_foo(1)
用classmethod裝飾的是類方法,可以通過類直接調用,類方法的第一個參數不是類的對象實例,而是類;而普通的方法則是必須通過類的實例對象去調用,所以第一個參數都會是類的實例self;
用static method裝飾的方法,不管傳遞給第一個參數的是self (對象實體)還是cls(類).它們的表現都一樣。靜態方法,說到底它就是一個方法
setUpClass
我的代碼中有這樣的用法:
class HelloTests(unittest.TestCase):
@classmethod
def setUpClass(cls):#setUpClass must be a class method
****
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_process(self):
****
setup、teardown方法在每執行一個TestCase時,都會重新執行一遍,
當只想要在整個文件中進行一次setup和teardown操作的時候,可以用setUpClass、tearDownClass,注意哦:他們只是函數。