单元测试框架中测试用例的执行顺序
2020-05-14 17:36 改改~_~ 阅读(1339) 评论(0) 编辑 收藏 举报一、用例用例全部执行与选择执行
单元测试用例的执行顺序按照定义的用例的名称的编码大小,从小到大依次执行,因此一般通过后缀001、002...等来规划测试用例的执行顺序,例如:
import unittest class F1(unittest.TestCase): def setUp(self): print('我已经做好了准备工作') def tearDown(self): print('已处理') def test_001(self): #单独执行其中的一个用例,鼠标放在这行里,右键点击执行 print('test001') def test_002(self): print('test002') def test_003(self): print('test003') if __name__ == '__main__': unittest.main(verbosity=2) #执行所有的用例,鼠标放在这行里,右键点击执行
鼠标放到main方法中,右键选择文件执行会执行所有的测试用例,结果为:
如果只执行其中的一条用例则鼠标放在这个用例的方法中右键选择文件执行会只执行这一条用例
# 执行所有用例的运行结果 Testing started at 上午11:32 ... /Users/ligaijiang/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --path /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py Launching unittests with arguments python -m unittest /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py in /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest 我已经做好了准备工作 test001 已处理 我已经做好了准备工作 test002 已处理 我已经做好了准备工作 test003 已处理 Ran 3 tests in 0.002s OK Process finished with exit code 0
二、单元测试用例的执行顺序
执行以下测试用例,会先执行map再执行news,虽然news写在来前面
import unittest from selenium import webdriver import time class F3(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver.implicitly_wait(30) self.driver.get('https://www.baidu.com/') def tearDown(self): self.driver.quit() def test_baidu_news(self): self.driver.find_element_by_link_text('新闻').click() time.sleep(5) def test_baidu_map(self): self.driver.find_element_by_partial_link_text('图').click() time.sleep(5) if __name__ == '__main__': unittest.main(verbosity=2)
通过验证可以发现m的编码为109,n的编码为110,因此先执行的m开头的,再执行的n开头的
Last login: Wed May 13 17:33:51 on ttys004
(base) localhost:~ ligaijiang$ python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ord('n')
110
>>> ord('m')
109
>>>
三、单元测试用例使用套件控制浏览器的打开次数
以下方式,浏览器会只打开一次,执行两个测试用例后关闭一次,结束:
import unittest from selenium import webdriver import time class F2(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver=webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get('https://www.baidu.com/') @classmethod def tearDownClass(cls): cls.driver.quit() def test_baidu_news_001(self): self.driver.find_element_by_link_text('新闻').click() time.sleep(10) self.driver.back() def test_baidu_map_002(self): self.driver.find_element_by_partial_link_text('图').click() time.sleep(15) self.driver.back() if __name__ == '__main__': unittest.main(verbosity=2) #如何执行所有的用例
以下方式,浏览器会打开一次,执行用例001,关闭;浏览器再次打开,执行用例002,关闭
import unittest from selenium import webdriver import time class F3(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver.implicitly_wait(30) self.driver.get('https://www.baidu.com/') def tearDown(self): self.driver.quit() def test_baidu_news_001(self): self.driver.find_element_by_link_text('新闻').click() time.sleep(5) def test_baidu_map_002(self): self.driver.find_element_by_partial_link_text('图').click() time.sleep(5) if __name__ == '__main__': unittest.main(verbosity=2) # 如何执行所有的用例