1. 程式人生 > 實用技巧 >Python+Selenium框架設計篇之6-一個類檔案多個測試方法情況下測試韌體的寫法

Python+Selenium框架設計篇之6-一個類檔案多個測試方法情況下測試韌體的寫法

其實,到前面這一篇文章,簡單的Python+Selenium自動化測試框架就已經算實現了。接下來的主要是介紹,unittest管理指令碼,如何如何載入執行指令碼,再就是採用第三方外掛,實現輸出html的測試報告。本文來介紹下,在同一個類中,多個測試函式時候,測試韌體如何寫

為了說明這個問題,我們在之前的測試類基礎上,再寫一個test_search2()的測試用例,看看會發生什麼。

 
# 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()

問題發現了沒,我們的瀏覽器啟動和關閉了兩次,是不是這個問題?原來,沒執行一次test開頭的函式,都要執行一次測試韌體,也就是說執行setUp()和()一次,如果有N個test開頭的函式,測試韌體就執行N次,我們到底有沒有,只需要執行一次測試韌體,支援執行多次測試函式。

我們測試中,肯定需要,開啟一個頁面,然後測試這個頁面的多個用例,才關閉這個頁面,去測試其他頁面,在unittest是有相關測試韌體方法去支援這種行為。請看下面調整,自己對比下,能不能找出不同。

 
# 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()

  執行一下,是不是,只需要開啟和關閉瀏覽器一次,就執行了2個搜尋用例?以後,專案中基本採用這種方法來執行同一個功能不同測試用例的編寫。

最後

今天會繼續分享三篇框架,小楓希望的是給大家幫助,在這裡也希望大家共同進步,

如果對測試框架感興趣小楓這推薦一個群,裡面自動化測試,面試寶典,測試框架等等,進群免費領取喲,1140267353

掃碼進群更多驚喜,歡迎加入這個大家庭!!!!