unittest中的setUp可以在每个测试方法运行前执行,有效的减少了代码量。但有个弊端,比如打开浏览器操作,执行每个测试方法前都要重新打开一次,这样就会浪费很多时间。
是否可以只打开一次浏览器,执行完所有的测试方法后再关闭浏览器呢?这里就需要用到装饰器(@classmethod)来解决了。
一、装饰器(@classmethod)
1)setUp与setUpClass的区别
- setup(self):每个测试方法运行前都会运行一次。
- teardown(self):每个测试方法运行完之后都会执行一次。
- setUpClass(cls):与装饰器@classmethod 一起使用,在所有测试方法运行前运行,且只运行一次。
- tearDownClass(cls):与装饰器@classmethod 一起使用,在所有测试方法运行完之后运行,且只运行一次
2)在类中的方法上加上@classmethod,用来表示该方法是类方法。
二、执行顺序
import unittest
class Demo(unittest.TestCase):
def setUp(self):
print("setUp!")
def tearDown(self):
print("tearDown!")
@classmethod
def setUpClass(cls):
print("setUpClass!")
@classmethod