UnitTest中:setUpClass(cls)与setUp(self)的区别与使用
setUpClass(cls) tearDownClass(cls) 类方法:
1. 执行函数方法前,先执行一次setUpClass(cls)里面的方法,执行完函数方法后,再执行一次tearDownClass(cls)里面的函数方法。
2、unittest默认根据ASCII码的顺序加载执行用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。
3. 函数方法以test开头进行读取,不是test开头的不执行该方法。例如:test_login 执行 login_test 不执行
4、注意:setUpClass(cls) 与 tearDownClass(cls) 并不一定要组合使用,它们是同级关系不是上下级关系,可以单独拆分使用。例如:setUpClass(cls) 为前置条件,tearDown(self)为后置条件,那么setUpClass(cls)需要添加装饰器且里面的方法只会执行一次,tearDown(self)后置条件不用加装饰器,只是每执行完一个函数方法后,都会去执行一次tearDown(self)函数里面的方法-- 如图(2)输出:
使用必须要加 @classmethod内置装饰器,否则会报 “TypeError: setUpClass() missing 1 required positional argument: 'cls'”的错误。使用类方法执行所有用例时里面的方法只会执行一次,不会重复执行-- 如(1)输出:
图(1)
图(2)
-----------------------------------------------
setUp(self) tearDown(self) 函数:
1. 每次执行函数方法时,必须先执行一次setUp(self)函数,执行完一个函数方法后,必须再执行一次tearDown(self)函数。
2、unittest默认根据ASCII码的顺序加载执行用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。
3. 当函数方法以test开头进行读取,不是以test开头的不执行该方法。
执行用例时每运行一条用例都会去执行一遍里面的方法,如下图输出:
进行定义全局变量并且赋值,用例执行时可以直接使用也可以替换重新赋值
以@classmethod
def tearDownClass(cls): 类方法定义后置的时候不能在里面进行调用其它地方的方法使用,须以 def tearDown(self): 函数方法进行定义后置的才能在里面调用其它地方的方法,具体原因还有待研究---