Python+Selenium框架設計篇之6-一個類檔案多個測試方法情況下測試韌體的寫法
阿新 • • 發佈:2019-01-10
其實,到前面這一篇文章,簡單的Python+Selenium自動化測試框架就已經算實現了。接下來的主要是介紹,unittest管理指令碼,如何如何載入執行指令碼,再就是採用第三方外掛,實現輸出html的測試報告。本文來介紹下,在同一個類中,多個測試函式時候,測試韌體如何寫
為了說明這個問題,我們在之前的測試類基礎上,再寫一個test_search2()的測試用例,看看會發生什麼。
問題發現了沒,我們的瀏覽器啟動和關閉了兩次,是不是這個問題?原來,沒執行一次test開頭的函式,都要執行一次測試韌體,也就是說執行setUp()和()一次,如果有N個test開頭的函式,測試韌體就執行N次,我們到底有沒有,只需要執行一次測試韌體,支援執行多次測試函式。# coding=utf-8 import time import unittest from framework.browser_engine import BrowserEngine from pageobjects.baidu_homepage import HomePage class BaiduSearch(unittest.TestCase): def setUp(self): """ 測試韌體的setUp()的程式碼,主要是測試的前提準備工作 :return: """ browse = BrowserEngine(self) self.driver = browse.open_browser(self) def tearDown(self): """ 測試結束後的操作,這裡基本上都是關閉瀏覽器 :return: """ self.driver.quit() def test_baidu_search(self): """ 這裡一定要test開頭,把測試邏輯程式碼封裝到一個test開頭的方法裡。 :return: """ homepage = HomePage(self.driver) homepage.type_search('selenium') # 呼叫頁面物件中的方法 homepage.send_submit_btn() # 呼叫頁面物件類中的點選搜尋按鈕方法 time.sleep(2) homepage.get_windows_img() # 呼叫基類截圖方法 try: assert 'selenium' in homepage.get_page_title() # 呼叫頁面物件繼承基類中的獲取頁面標題方法 print ('Test Pass.') except Exception as e: print ('Test Fail.', format(e)) def test_search2(self): homepage = HomePage(self.driver) homepage.type_search('python') # 呼叫頁面物件中的方法 homepage.send_submit_btn() # 呼叫頁面物件類中的點選搜尋按鈕方法 time.sleep(2) homepage.get_windows_img() # 呼叫基類截圖方法 if __name__ == '__main__': unittest.main()
我們測試中,肯定需要,開啟一個頁面,然後測試這個頁面的多個用例,才關閉這個頁面,去測試其他頁面,在unittest是有相關測試韌體方法去支援這種行為。請看下面調整,自己對比下,能不能找出不同。
執行一下,是不是,只需要開啟和關閉瀏覽器一次,就執行了2個搜尋用例?以後,專案中基本採用這種方法來執行同一個功能不同測試用例的編寫。# coding=utf-8 import time import unittest from framework.browser_engine import BrowserEngine from pageobjects.baidu_homepage import HomePage class BaiduSearch(unittest.TestCase): @classmethod def setUpClass(cls): """ 測試韌體的setUp()的程式碼,主要是測試的前提準備工作 :return: """ browse = BrowserEngine(cls) cls.driver = browse.open_browser(cls) @classmethod def tearDownClass(cls): """ 測試結束後的操作,這裡基本上都是關閉瀏覽器 :return: """ cls.driver.quit() def test_baidu_search(self): """ 這裡一定要test開頭,把測試邏輯程式碼封裝到一個test開頭的方法裡。 :return: """ homepage = HomePage(self.driver) homepage.type_search('selenium') # 呼叫頁面物件中的方法 homepage.send_submit_btn() # 呼叫頁面物件類中的點選搜尋按鈕方法 time.sleep(2) homepage.get_windows_img() # 呼叫基類截圖方法 try: assert 'selenium' in homepage.get_page_title() # 呼叫頁面物件繼承基類中的獲取頁面標題方法 print ('Test Pass.') except Exception as e: print ('Test Fail.', format(e)) def test_search2(self): homepage = HomePage(self.driver) homepage.type_search('python') # 呼叫頁面物件中的方法 homepage.send_submit_btn() # 呼叫頁面物件類中的點選搜尋按鈕方法 time.sleep(2) homepage.get_windows_img() # 呼叫基類截圖方法 if __name__ == '__main__': unittest.main()