unittest_前置setUp与后置tearDown
unittest_前置setUp与后置tearDown
setUp:用例执行前的准备操作(比如数据库的连接,浏览器驱动实例化等)
setDown():用例执行后的清理操作(比如清除数据,关闭数据库连接,关闭浏览器驱动等)
unittest前置后置分为以下三种:
1、setUpModule、tearDownModule:模块级,全局,所有用例执行前/后只执行一次(类外)
2、setUpClass、tearDownClass:类级,一个测试用例类执行前/后只执行一次(类中),需要注意的是:必须加上@classmethod才会生效
3、setUp、tearDown:方法级,每个测试用例前/后都执行一次(类中类外都执行)
那么以下就来直接写代码,来看下执行情况:
import unittest #整个模块开始前执行 def setUpModule(): print('模块级别(setUpModule)开始') #整个模块结束后执行 def tearDownModule(): print('模块级别(tearDownModule)结束') class Testcase(unittest.TestCase): #setUpClass和tearDownClass为类方法,需要通过@classmethod进行装饰,另外方法的参数为cls,cls与self没有本质区别,都表示类对象本身 #每个测试用例类开始前执行 @classmethod def setUpClass(cls): print('类级别(setUpClass)开始') #每个测试用例类 # 结束后执行 @classmethod def tearDownClass(cls): print('类级别(tearDownClass)结束') #每条测试用例前执行 def setUp(self) -> None: print('测试用例开始') #每条测试用例后执行 def tearDown(self) -> None: print('测试用例结束') #编写测试用例 def test_01(self): print('测试用例01执行') def test_02(self): print('测试用例02执行') if __name__ == '__main__': unittest.main()
执行输出如下:
可以看到调用顺序:模块级(setUpModule、tearDownModule)=>类级(setUpClass、tearDownClass)=>方法级(setUp、tearDown)