UI自动化unittest框架之装饰器@classmethod

  • 2019 年 11 月 20 日
  • 筆記

01

进入正文探讨

前言:unittest框架大家应该很熟悉,unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,就是我们每执行一条用例,就会打开一次浏览器;缺点:操作繁琐、耗时长、易报错。

于是就想是不是可以只打开一次浏览器,执行完所有用例再关闭呢?

这就需要用到装饰器(@classmethod)来解决了。

一.装饰器

1>用setUp与setUpClass区别

  • setup():每个测试case运行前运行
  • teardown():每个测试case运行完后执行
  • setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
  • tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次

2>@是修饰符,classmethod是python里的类方法

二.selenium实例模型

1>可以把打开浏览器操作放到前置setUpClass(cls)里,这样就可以实现打开一次浏览器,执行多个case了

# coding:utf-8  import unittest  import time    class Test(unittest.TestCase):      @classmethod      def setUpClass(cls):          print("start!")  #初始化环境 开始执行脚本      @classmethod      def tearDownClass(cls):          time.sleep(1)          print("end!")  #结束      def test01(self):          print(u"执行测试用例01")  #开始执行测试用例...      def test03(self):         print(u"执行测试用例03")        def test02(self):          print(u"执行测试用例02")        def addtest(self):          print(u"add方法")    if __name__ == "__main__":    unittest.main()

2>从执行结果可以看出,前置和后置在执行用例前只执行了一次。

通过装饰器后,我们执行的耗时就缩短,执行一次即可跑完测试用例

初学者们,看到这里你们明白了吗?欢迎留言给出建议:)

文部分来源网络,如有侵权请第一时间联系删除。