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): 函数方法进行定义后置的才能在里面调用其它地方的方法,具体原因还有待研究---

 

posted @ 2020-09-09 13:02  ~狼哥~  阅读(4734)  评论(0编辑  收藏  举报