前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。
于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。
一、装饰器
1.用setUp与setUpClass区别
setup():每个测试case运行前运行
teardown():每个测试case运行完后执行
setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次
2.@是修饰符,classmethod是python里的类方法
import unittest
import time
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start!")
@classmethod
def tearDownClass(cls):
time.sleep(1)
print("end!")
def testA(self):
print("测试用例1")
def testC(self):
print("测试用例3")
def testB(self):
print("测试用例2")
if __name__ == "__main__":
unittest.main()
执行结果:

本文讲解了如何使用Python的unittest框架中的装饰器(@classmethod)来优化测试用例的执行效率,通过只在所有测试用例开始前和结束后各执行一次setUpClass和tearDownClass方法,避免了重复打开和关闭浏览器等耗时操作。
601

被折叠的 条评论
为什么被折叠?



