錄製你的第一個web 自動化測試用例
本文節選自霍格沃茲測試學院內部教材
Web應用程式的驗收測試常常涉及一些手工任務,例如開啟一個瀏覽器,並執行一個測試用例中所描述的操作。但是手工執行的任務容易出現操作人員人為的錯誤,花費的時間成本也比較多。因此,將這些任務自動化,就可以消除人為因素。Selenium可以幫助我們自動完成驗收測試,通過構建更嚴格的測試,從而使軟體更為可靠也更易於維護。
Selenium 測試框架及用例編寫
Selenium是什麼?
Selenium 是用於測試 Web 應用程式使用者介面 (UI) 的常用框架。它是一款用於執行端到端功能測試的超強工具。您可以使用多個程式語言編寫測試,並且
Selenium 是能夠在一個或多個瀏覽器中執行這些測試。
Selenium架構
編寫程式碼使用 client的 api 然後client和Selenium溝通如何操作,之後selenium通過瀏覽器driver操作瀏覽器執行各種動作。
目前最新的版本是Selenium 3,Selenium 核心元件包括:
-
Selenium WebDriver
-
Selenium IDE
-
Selenium Grid
Selenium 原始碼:
https://github.com/SeleniumHQ/selenium,[Selenium Client Driver]
(https://seleniumhq.github.io/selenium/docs/api/py/):
Selenium WebDriver的Python語言實現。
參考:Selenium with Python
安裝Selenium
-
安裝瀏覽器:Firefox、Chrome
-
下載瀏覽器Driver:
GeckoDriver(Firefox)、ChromeDriver(Chrome),WebDriver版本需要和瀏覽器的版本保持一致。
- 安裝Selenium Client Driver:
pip install selenium
測試用例的流程
測試用例是為了實施測試而向被測試的系統提供的一組集合,這組集合包含:測試環境、操作步驟、測試資料、預期結果等。
注意 :一條測試用例的最終結果只有一個:成功或者失敗。
三大核心要素為 :標題 、步驟 、預期結果
-
標題:是對測試用例的描述,標題應該清楚的表達測試用例的用例
-
步驟:對測試執行過程進行描述
-
預期結果:提供測試執行的預期結果,預期結果一般是根據需求得出,如果實際結果和預期結果一致則測試通過,反之失敗。
編寫自動化測試用例
首先是在程式碼的最上面匯入了 Selenium 的包,其次是測試方法命名、測試步驟、斷言。
* * * * * * *
from selenium import webdriver
def test_search(): # 測試的標題即 test_search driver = webdriver.Chrome() driver.get('https://www.baidu.com') # 測試的步驟 search = driver.find_element_by_id('su').get_attribute('value') # assert search == "百度" # 斷言預期結果
使用Selenium IDE用例錄製
Selenium IDE可以錄製測試步驟。它程式碼匯出的風格不是PageObject模式,一般不怎麼使用,更傾向於寫程式碼做標準的功能測試。
安裝完成後,通過在瀏覽器的選單欄中點選圖示啟動。
錄製第一個測試用例
第一步:建立新專案後,取名為 hogwarts_demo1
。
第二步:然後需要填寫 URL(要錄製測試指令碼的網站 URL)。這裡使用的是 https://ceshiren.com/
。
第三步:完成設定後,將開啟一個新的瀏覽器視窗,載入 URL 並開始錄製指令碼。在頁面上的操作都將記錄在 IDE 中。操作完成後,切換到 IDE
視窗並單擊停止錄製按鈕。
第四步:停止後,為剛錄製的測試用例取名ceshiren_demo1
匯出用例分析
利用 Selenium IDE 匯出 pytest 格式程式碼。
匯出用例程式碼如下:
#註釋是由 Selenium IDE 生成的程式碼# Generated by Selenium IDE#匯入可能用到的依賴import pytestfrom selenium import webdriverfrom selenium.webdriver.common.by import By
class TestDemo(): #setup_module()只會在開始測試執行一次 def setup_method(self, method): #初始化webdriver self.driver = webdriver.Chrome() self.vars = {}
#teardown_module()只會在結束測試執行一次 def teardown_method(self, method): #關閉瀏覽器並關閉啟動 ChromeDriver 時啟動的 ChromeDriver 可執行檔案 self.driver.quit() #測試方法 def test_demo(self): #訪問網址 self.driver.get("https://ceshiren.com/") #設定視窗大小 self.driver.set_window_size(1473, 866) #點選操作 self.driver.find_element(By.LINK_TEXT, "所有分類").click() self.driver.find_element(By.CSS_SELECTOR, "#ember201 .category-name").click() #關閉當前視窗 self.driver.close()
這段程式碼就簡單的實現了對瀏覽器簡單的自動化
儲存
單擊 IDE 右上角的 save 圖示,輸入專案的儲存名稱和地址
回放
選擇想要回放的測試用例,單擊 play 按鈕,在 IDE 中回放測試。
控制元件定位
來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、效能測試、安全測試、持續整合/持續交付/DevOps,測試左移、測試右移、精準測試、測試平臺開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力
QQ交流群:484590337
公眾號 TestingStudio
點選獲取更多資訊