從零開始搭建一個簡單的ui自動化測試框架04(pytest+selenium+allure)
四、自動化測試的持續整合(pytest+allure2+jenkins)
為什麼要實現持續整合
回顧一下,先期我們所做的已經可以實現一個挺完整的測試過程了,從用例的管理到執行到報告的傳送都可以實現,但目前還差個閉環。
目前我們的測試執行,是靠人手動執行的,無法實現無人值守,例如,我想實現,當專案工程程式碼被構建時,自動執行測試迴歸一下本次程式碼的改動有沒有影響,如果只靠手動執行,就只能派個人等著構建結束了,極其不方便;此外,我的測試程式碼更新了,如果靠自己去上傳,也很麻煩。
設想一下,如果實現了,我本地的測試程式碼更新之後,可以有個地方自動拉取我的程式碼,然後按我設定的時機(例如專案程式碼構建後,或者每天的固定時間)自動執行迴歸測試,測試完了自動給我傳送測試結果,是不是更為理想的測試流程呢?而這也是持續整合的意義所在。
如果使用之前介紹的unittest的話,那麼本章沒有什麼多餘的介紹,只要配置好jenkins,然後新建一個執行用例的job就行了,不過本章打算介紹一個新的搭配方式,更方便,更簡單。
安裝pytest
pytest是python上的一個測試框架,相容unittest的語法,因為之後的測試報告生成需要pytest的支援,所以我們要先裝一下這個框架。
安裝pytest:cmd介面輸入命令:pip install pytest;
安裝allure2
allure2是一個測試報告的框架,支援多種語言、測試框架,比起前面提到的HTMLTestRunner有著更加漂亮的介面,更加直觀的圖表統計,以及更為豐富的可新增資訊。
allure2的介面:
安裝allure2需要先配置java環境(推薦java8),以及安裝pytest。
安裝pytest_allure_adaptor:cmd介面輸入命令:pip install pytest_allure_adaptor 。
這樣allure2就安裝好了。
在jenkins上使用pytest執行用例生成allure報告
jenkins是一個很著名的ci軟體,這裡就不多介紹了,安裝完jenkins之後,我們需要先在jenkins上配置一下。
首先安裝allure的外掛,在jenkins---系統管理---管理外掛---可選外掛的列表裡,勾選安裝外掛 Allure Jenkins Plugin 、HTML Publisher plugin;
然後進入jenkins---系統管理---全域性工具配置,如下圖配置好(不要完全照抄哦,引數是本地的話需要填你本地的路徑):
再進入jenkins---系統管理---系統設定,拉到最下面,設定問題追蹤,在Allure Report 下選擇增加
Key: allure.issues.tracker.pattern Value: http://tracker.company.com/%s
如圖配置:
最後進入jenkins---系統管理---指令碼命令列,輸入如下命令執行許可權程式碼,點選執行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")
,如圖配置:
這樣我們在jenkins裡的配置基本設定完了,接下來我們新建一個job來使用pytest執行我們的測試用例,並生成allure2的測試報告。
進入jenkins---新建item---輸入你的任務名稱---構建一個自由風格的軟體專案,然後配置你的專案,在構建裡輸入命令:
python -m pytest 你測試用例的目錄 --alluredir allure-result
再增加一個構建後操作,選擇Allure Report,path裡填上報告中間檔案目錄,也就是上面命令裡的allure-result,再點選高階,設定最終生成報告的目錄,在Report path裡填上allure-report。
這裡解釋一下,allure是這樣的,執行第一個命令:
python -m pytest 你測試用例的目錄 --alluredir allure-result
的時候,其實是執行你的測試用例,並把結果生成一箇中間檔案,用於生成最終的報告,也就是說,這裡生成的並不是最終的報告,allure-result只是中間檔案的路徑,這個路徑需要和下面的構建後操作AllureReport裡的Results的Path的值一致。
而Allure Report這個構建後操作其實是執行的另一個命令,大家在執行後的Console Output裡也能看到這個命令,這裡貼出來:
[Allure report] $ "C:\Program Files (x86)\Jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\allure\bin\allure.bat" generate "中間檔案的路徑" -c -o "最終報告的路徑"
解釋一下這個命令,C:\Program Files (x86)\Jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\allure\bin\allure.bat這個路徑是allure轉換報告工具的路徑,這個工具你也可以單獨下載,這裡暫時不提;
generate是把中間檔案生成最終報告的指令, -c -o 前面的是你中間檔案的路徑,之後的是最終生成報告的路徑。
至此,我們的無人值守執行用例並自動生成報告就算實現了,我們可以給這個job設定執行時間點或者把這個job掛在別的構建專案下實現定點執行和定時機執行。
當然,還有最後一步,光是執行還不行,我們需要執行之後自動給我們發出通知,告訴我們執行的結果,這裡用到的是jenkins的郵件通知外掛Extended E-mail Notification,下面講解一下怎麼設定郵件通知。
首先我們安裝這個外掛,還是jenkins---系統管理---管理外掛,然後在可選外掛裡搜尋Extended E-mail Notification並安裝。
安裝完之後,進入jenkins---系統管理---系統設定,先找到Jenkins Location欄,設定系統管理員郵件地址為你的發件郵箱,然後找到Extended E-mail Notification欄,這裡我以QQ郵箱舉例設定,
先設定SMTP server為 smtp.qq.com;
Default user E-mail suffix填 @qq.com;
然後點開高階,勾選Use SMTP Authentication;
User Name填你的發件地址,和管理員地址保持一致;
Password填你的QQ郵箱的smtp服務授權碼,而不是你的QQ密碼,不知道的話自己去郵箱的設定頁裡找;
Use SSL勾選;
SMTP port填465;
下面的Default Recipients填你的收件地址;
Default Content內容稍微改一下,改為:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at ${BUILD_URL}allure/ to view the results.
下面的Enable Debug Mode記得勾選,方便傳送失敗看日誌,再點開Default Triggers設定你郵件的傳送時機,到這裡外掛的設定就完畢了。
然後回到你上面job的配置頁面,增加一個構建後操作Editable E-mail Notification即可。
現在,專案構建完之後就會自動把報告的地址傳送給你預定的郵箱。
郵件內容:
參考資料
相關文章
- 搭建 WPF 上的 UI 自動化測試框架UI框架
- Android自動化測試之Monkeyrunner從零開始Android
- Python之介面自動化初級:開始一個簡單的介面測試Python
- 從開發轉測試:我從零開始,一干就是6年的自動化測試歷程
- android 5個自動化測試Ui框架AndroidUI框架
- 【從零開始寫一個簡單的ImageLoader框架】ImageLoader分析框架
- UI自動化測試框架Cypress初探UI框架
- 如何從0開始做自動化測試?
- 【從零開始寫一個簡單的ImageLoader框架】專案介紹框架
- 一種基於 cypress 的 UI 自動化測試框架UI框架
- Keil中搭建自動化單元測試框架Unity框架Unity
- 從零開始搭建一個簡單的基於webpack的vue開發環境WebVue開發環境
- 【從零開始寫一個簡單的ImageLoader框架】MyImageLoader程式碼簡介框架
- 從零開始實現一個簡易的Java MVC框架JavaMVC框架
- 介面自動化測試框架搭建的思路框架
- 【設計和開發一套簡單自動化UI框架】UI框架
- 自動化測試系列 —— UI自動化測試UI
- pytest+selenium+allure web端UI自動化框架設計WebUI框架
- 月薪20K的自動化測試:從0開始搭建測試體系,基礎篇
- 從零開始搭建一個舒適的ubuntuUbuntu
- 從零開始搭建Jenkins+Docker自動化整合環境JenkinsDocker
- 移動端 UI 自動化測試框架對比UI框架
- 從一次故障聊聊前端 UI 自動化測試前端UI
- 從零開始搭建一個 hexo 部落格。Hexo
- 從零開始搭建一個vue專案Vue
- 從零開始搭建一個mock服務Mock
- 從零開始做一個SLG遊戲(四):UI系統之主介面搭建遊戲UI
- 如何從零開始學習一個框架框架
- 從零開始實現一個RPC框架(零)RPC框架
- 介面自動化測試框架搭建總結框架
- webpack從零開始搭建多頁面(一):webpack起步到執行一個簡單的demoWeb
- 測試開發之自動化篇-自動化測試框架設計框架
- 請問一下這個問題怎麼解決,這是剛開始搭建的介面自動化測試框架框架
- 一個簡單的介面測試框架 demo框架
- Selenium 自動化測試從零實戰
- 從零開始用 Flask 搭建一個網站(一)Flask網站
- 從零開始實現一個RPC框架(一)RPC框架
- 自動化測試框架框架