selenium之unittest 装饰器
来源:互联网 发布:js random 50 100 编辑:程序博客网 时间:2024/05/18 04:11
还记不记得我们selenium之unittest的简单用法(二)中的unittest执行顺序。
unittest 里面 setUp 可以在每次执行用例前执行,这样有效的减少了
代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。
于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。
一、 装饰器
1) setUp 与 setUpClass 区别
- setup():每个测试 case 运行前运行
- teardown():每个测试 case 运行完后执行
- setUpClass():必须使用@classmethod 装饰器,所有 case 运行前只运行一次
- tearDownClass():必须使用@classmethod 装饰器,所有 case 运行完后只运行一次
2)@是修饰符,classmethod 是 python 里的类方法
二、执行顺序
用类方法写几个简单 case
比如我们创建test_05.py文件,内容如下:
#-*- coding:utf-8 -*-import unittestimport timeclass Test(unittest.TestCase): @classmethod def setUpClass(cls): print "开始","\n" @classmethod def tearDownClass(cls): time.sleep(1) print "结束" def test01(self): print "执行测试用例01" def test02(self): print "执行测试用例02" def test03(self): print "执行测试用例03" def addtest(self): print "执行add方法"if __name__=="__main__": unittest.main()
执行结果:从执行结果可以看出,前置和后置在执行用例前只执行了一次。
C:\Python27\python.exe "C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pycharm\_jb_unittest_runner.py" --path F:/pycharm-workspace/selenium/test_05.pyTesting started at 11:55 ...Launching unittests with arguments python -m unittest discover -s F:/pycharm-workspace/selenium -p test_05.py -t F:\pycharm-workspace\selenium in F:\pycharm-workspace\selenium开始执行测试用例01执行测试用例02执行测试用例03结束Ran 3 tests in 1.034sOKProcess finished with exit code 0
三、selenium 实例展示
我们百度搜索MTbaby为例来演示。
1.可以把打开浏览器操作放到前置 setUpClass(cls)里,这样就可以实现打开一
次浏览器,执行多个 case 了。
#-*- coding:utf-8 -*-import unittestimport timefrom selenium import webdriverclass SearchTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.implicitly_wait(30) cls.driver.maximize_window() cls.driver.get('http://www.baidu.com/' ) #打开百度首页 cls.search_text = cls.driver.find_element_by_id('kw') cls.search_btn = cls.driver.find_element_by_id('su') def test_search(self): self.search_text.clear() self.search_text.send_keys(u'MTbaby') self.search_btn.click() time.sleep(4) title = self.driver.title self.assertEqual(title, u'MTbaby_百度搜索') @classmethod def tearDownClass(cls): cls.driver.quit()if __name__ == '__main__': unittest.main()
执行结果:
C:\Python27\python.exe "C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pycharm\_jb_unittest_runner.py" --path F:/pycharm-workspace/selenium/test2.pyTesting started at 14:54 ...Launching unittests with arguments python -m unittest discover -s F:/pycharm-workspace/selenium -p test2.py -t F:\pycharm-workspace\selenium in F:\pycharm-workspace\seleniumRan 1 test in 8.745sOKProcess finished with exit code 0
阅读全文
1 0
- selenium之unittest 装饰器
- selenium unittest
- selenium-Python之unittest(一)
- selenium-Python之unittest(二)
- selenium-Python之unittest(三)
- selenium-Python之unittest(四)
- selenium之unittest的简单用法(一)
- selenium之unittest的简单用法(二)
- selenium unittest 单元测试
- Selenium学习笔记之004:使用Selenium IDE录制脚本并分析unittest框架
- Python+Selenium框架设计篇之8-unittest执行脚本方法之addTest
- Python+Selenium框架设计篇之9-unittest执行脚本方法之makeSuite()
- Python+Selenium框架设计篇之10-unittest执行脚本方法之discover()方法
- Python+Selenium框架设计篇之2-简单介绍unittest单元测试框架
- selenium之unittest批量执行测试用例、生成html报告
- 装饰器之变体装饰
- Selenium-Webdriver(python) (六) --- Unittest框架分析
- selenium-webdriver(python) (十六) --unittest 框架
- linux部署tomcat项目
- JAVA WEB 将后台传过来的jsonArray 数据转换为list集合
- 有关如何防止表单重新提交问题
- ACM算法-时间复杂度分析(1.渐进分析)
- 纪念我逝去的青春
- selenium之unittest 装饰器
- 《OC基础教程》读书笔记4-复合
- 如何运用dos修改ip地址
- spring boot 的 JPA 操作,提示Entity过时,No identifier specified for entity
- phpstorm配置scss时出现编码错误
- yarn-4
- 更新本地所有分支
- 线性筛莫比乌斯函数
- 进入子shell的各种情况分析