RF 的全稱是 RobotFramework,它是第三方的框架,使用它必須先安裝,RF 框架的優點在于對編程新手比較友好,支持關鍵字驅動,
RF 框架通常的適用場景是用一位有編程功力的自動化工程師搭建好框架,封裝好常用的關鍵字,然后由不同的功能業務部門的測驗人員呼叫關鍵字進行自動化測驗腳本的撰寫,撰寫人員可以對編程沒什么基礎甚至零基礎,因為呼叫的固定功能都已經封裝好了,所以,對于編程新手而已,這個框架更像一個工具,我們往里面堆砌步驟就可以完成,

如果有需要資料的,可以打開你的微信掃一掃,好友申請寫“資料”,就能獲取學習資料,更好的學習python!
但是對于有編程基礎的同學來說,一昧的呼叫關鍵字對我們的技術沒有太大的提升,Python 入門了后,我們就要拿來用了,語言本來就是工具,多用用才能更加熟練,所以,今天我想分享的框架是 Python 自帶的 unittest 框架,這個框架擴展性也比較強,可以做 Web 和 APP 的自動化,擴展性強,
搭建環境
剛說過,unittest 框架是 Python 自帶的,所以只要你安裝了 Python,在編輯器中直接呼叫即可,非常方便,

框架結構
匯入包后直接就能用了,再用這個框架之前我們先看看它的結構,

我們舉一個小栗子吧,我們寫兩條測驗案例:
1、我們打開百度,輸入一個詞 Python,點擊查詢,驗證頁面元素;
2、輸入 Go,點擊查詢,驗證頁面元素,
測驗類繼承
我們先新建自己的測驗類,新建的測驗類繼承 unittest 中的 TestCase 類,這樣我們就能繼承 TestCase 類中的方法了,
結構分析
接著我們看到類下面有一些固定結構,這些固定結構我稱它為「瞻前顧后」,這里我把這個詞當褒義詞來用,為什么這么說呢,我們一一來看,
setUpClass 方法
這個方法的作用寫在所以案例運行前要做的作業,比如上面舉的例子中,所有案例運行前需要準備的作業是什么?那就是打開瀏覽器,輸入百度網址,
那我們就可以把這個前期作業放在這個方法里面,有一點需要注意下,這個方法必須要用上 classmethod 裝飾器,不加上會報錯,至于這個裝飾器什么作用,這里暫時不做分析,如果你還不懂什么是裝飾器,可以看看我之前分享過的一篇文章 Python裝飾器
開始敲代碼,開始作業我做了三件事:定義一個驅動、打開一個地址、瀏覽器視窗最大化,

setUp 方法
這個方法名稱看起來和上面的差不多,其實功能也是差不多,也是準備作業,它的作用是每條案例運行前做的作業,還是上面的例子,每條案例運行前我希望先清空輸入框里面的文本,再輸入我想輸入的文本,不然當我第一次輸入 Python 后,再輸入 Go 時,如果不清空的話,第二次輸入框的文本就是 PythonGo 了,
開始敲代碼,例子中這一步比較簡單了,用 clear 方法清空輸入框,一行代碼搞定,

測驗案例
準備作業做好后,我們就可以大干一場寫測驗案例了,一個方法就是一條案例,方法名稱需要注意下,一定要以 test 開頭,unittest 框架運行時會去方法里識別 test 開頭的方法并運行,
例子中兩條案例比較簡單,通過 id 去定位輸入框然后輸入文本,再通過 id 定位查詢按鈕并點擊,

利用Python框架unittest做自動化測驗,學習了!
案例中我用了 assertIn 方法來斷言頁面元素,校驗文字「百度為您找到相關結果約」是否存在當前頁面的原始碼中,page_source 是來獲取當前頁面原始碼的,
這樣,例子中的兩條案例就完成了,
tearDown 方法
既然有案例開始前做準備作業的方法,對應也有每條測驗案例執行結束后的方法,就是 tearDown 方法,當然,我的例子中沒用上這個方法,這個方法就不用寫了,所以,這些方法根據自己的需求呼叫就好,屬于框架封裝好的一部分,
tearDownClass 方法
tearDownClass 方法和上面的 setUpClass 方法相呼應,它是在所有案例執行結束后做的作業,例子中的作業就是退出瀏覽器,當然,這個和 setUpClass 方法也是一樣,必須要呼叫 classmethod 裝飾器才能使用,

最后,我們運行所有案例就行,

運行效果圖如下:

運行特定案例
還有一種情景,假如我寫了兩套環境的案例,我現在只想運行其中一個環境的案例,比如例子中,我只想運行 test1 案例,這是我們需要創建一個測驗套件 Suite,把需要執行的案例放進套件,用 TextTestRunner 運行套件里的案例,

運行時我們發現只運行 test1 案例,
當然我們還有一種方法,就是把不想運行運行的方法前加上 @unittest.skip(),這時這條案例會無條件的跳過,不執行,skip 也可以加入判斷條件 @unittest.skipIf(reason),reason 條件為真時,這條案例跳過執行,
測驗報告
上面案例執行完成后,我們發現報告資訊太過簡單,

能生成生動一點的報告嗎?有的,我們需要下載一個 HTMLTestRunner 的 py 檔案,我用的 Python3,所以我下載是 HTMLTestRunner 對應的版本是和 Python 相關的,需要的在我公眾號里 回復「框架」獲取,
下載后放在 Python 安裝根目錄下,在編輯器中匯入,
import HTMLTestRunner
然后呼叫 HTMLTestRunner 方法生成報告,報告沒有指定保存目錄的話就默認保存在代碼的同一路徑下,

這里我把兩條案例都加到 test_suite 里面了,我們打開報告看看,

細心的讀者應該發現了,上面兩條案例點擊查詢按鈕后,我設定了等待時間,防止頁面元素還沒有完全加載出來而導致斷言失敗,這種加 sleep 強制等待時間的方法在實際專案中是不可取的,因為每次執行時的加載的時間可能不同,強制時間太長的話太浪費時間,太短的話又怕加載時間不夠,所以,我們得有一個智能等待的方法,這就要用到顯式等待和隱式等待的方法,
還有,當我們測驗案例基本類似的時候,發現代碼差不多,比如登錄功能,我們設計了好幾條案例,這時我們會用到資料驅動的思想,從 EXCEL 檔案中讀取資料,回圈執行,
上面說的兩個知識點后續會慢慢給大家分享,今天重點分享了 unittest 這個框架的基本用法,下次我們在慢慢嘮,
技術行業,一定要提升技術功底,豐富自動化專案實戰經驗,這對于你未來幾年職業規劃,以及測驗技術掌握的深度非常有幫助,
金九銀十面試季,跳槽季,整理面試題已經成了我多年的習慣!下面有我近幾年的收集和整理,整體是圍繞著【軟體測驗】來進行整理的,主體內容包含:python自動化測驗專屬視頻、Python自動化詳細資料、全套面試題等知識內容,
對于軟體測驗的的朋友來說應該是最全面最完整的面試備戰倉庫,為了更好地整理每個模塊,我也參考了很多網上的優質博文和專案,力求不漏掉每一個知識點,很多朋友靠著這些內容進行復習,拿到了BATJ等大廠的offer,這個倉庫也已經幫助了很多的軟體測驗的學習者,希望也能幫助到你!
愿你我相遇,皆有所獲! 歡迎關注微信公眾號:【傷心的辣條】 免費領取一份216頁軟體測驗工程師面試寶典檔案資料,以及相對應的視頻學習教程免費分享!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/246035.html
標籤:其他
上一篇:appium 自動化環境搭建
下一篇:八、shell的管道
