一、用例用例全部執行與選擇執行
單元測試用例的執行順序按照定義的用例的名稱的編碼大小,從小到大依次執行,因此一般通過后綴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) # 如何執行所有的用例
