標籤:測試結果 時間 ORC 連結 ash oca build 項目 批處理
Jenkins簡介
Jenkins是Java編寫的非常流行的持續整合(CI)服務,起源於Hudson項目。所以Jenkins和Hudson功能相似。
Jenkins支援各種版本的控制工具,如CVS、SVN、Git、Mercurial、Perforce和ClearCase,而且可以執行用Apache Ant或Java Maven構建的項目。同時,它也可以利用一些外掛程式、Shell指令碼和Windows批處理命令來構建其他平台的項目。
Jenkins除了構建軟體功能外,還可以用於搭建自動化測試環境,比如實現Python Selenium測試的無人值守的情況下按照預定的時間調度運行(如晚上),或者每次代碼變更提交至版本控制系統時實現自動啟動並執行效果。
下面,我將演式如何搭建Jenkins並建立一個自由式饒舌的軟體項目在無人值守的情況下按預定時間自動化測試(基於Python Selenium自動化測試)。
Jenkins環境準備
為了能夠成功使用Jenkins執行測試,我們需要做一些修改。目標是在Jenkins上按計劃執行測試,然後收集測試結果並顯示在Jenkins Dashboard頁面。為了實踐,我將重用之前建立的百度煙霧測試 (Smoke Test)。
我使用了unittest的TestSuite Runner批量執行測試,並以JUnit報告的格式輸出測試結果。這裡需要用到Python下的xmlrunner庫。執行以下命令下載與安裝xmlrunner。
pip install xmlrunner
百度煙霧測試 (Smoke Test)指令碼在通過TestSuite Runner運行homepagetests.py和searchtests.py兩個指令碼中的測試。最後用xmlrunner.XML TestRunner來運行煙霧測試 (Smoke Test)並產生JUnit測試報告。此報告以XML格式產生,儲存在test-reports子檔案夾中。代碼如下:
搭建Jenkins
搭建Jenkins簡單。下載系統平台的Jenkins包並進行安裝。下面我將安裝並啟動Jenkins,然後建立一個新的構建作業以對上面的指令碼進行在無人值守的情況下按照預定的時間調度運行(百度煙霧測試 (Smoke Test))。
1)下載並安裝Jenkins CI伺服器。我下載的是Jenkins Windows安裝包,並在Windows7上安裝Jenkins。
2)從瀏覽器進入Jenkins Dashboard頁面(預設情況下為http://localhost:8080)。
3)在Jenkins Dashboard頁面上,單擊建立項目(New Item)連結,建立一個新的Jenkins作業,如所示:
4)在項目名稱(Item name)文字框中輸入Baidu_Smoke_Test,然後選擇構建自由式饒舌的軟體項目(Freestyle project)選項按鈕,如所示:
5)單擊確定(OK)按鈕。以上指定名稱命名的新作業就建立成功了。
6)在構建(Bulid)部分,單擊增加構建步驟(Add build step),然後從下拉式清單中選擇執行Windows批處理命令(Execute Windows batch command)選項,如所示:
7)在命令(Command)文字框裡輸入以下命令,如所示。這個命令將煙霧測試 (Smoke Test)的Python指令檔複製到Jenkins工作空間下並執行smoketest.py。
8)在前面已經配置了smoketest.py以產生JUnit格式的測試結果,並將測試結果顯示在Jenkins Dashboard頁面。要在Jenkins中整合這些報告,先單擊增加構建後操作步驟(Add post-build action),然後選擇發布JUnit測試結果報告(Publish JUnit test result report)選項,如所示:
9)在構建後操作(Post-build Aactions)部分中,在測試報告XML(Test report XMLs)文字框中添加test-report/*.xml,如所示。Jenkins每次運行測試的時候,它將從test-reports子檔案夾中讀取測試結果。
10)由於需要按計劃時間自動執行測試,在構建觸發器(Build Triggers)部分選擇定期構建(Build periodically),並在計劃(Schedule)文字框中輸入如所示資料。那麼,每天下午18:24構建過程將自動觸發,作為無人值守構建過程的一部分,Jenkins也將自動執行測試,這樣在第二天早上當你到達辦公室的時候就可以看到測試執行結果了。
11)單擊儲存按鈕儲存作業配置,Jenkins將會顯示新建立的作業項目頁面。
12)現在可以來檢測一下所有的配置是否設定好,測試是否能成功執行。單擊立即構建(Build Now)連結手動運行該作業,如所示:
13)在構建曆史(Build History)部分中可以查看構建的運行狀態,如所示:
14)單擊構建曆史(Build History)部分中正在啟動並執行項目,將開啟如所示的頁面。
15)除了Jenkins頁面上的執行狀態和進度條,還可以通過開啟控制台輸出(Console Output)連結觀察後執行資訊。如是有命令輸出資訊的“控制台輸出”頁面。
16)一旦Jenkins完成構建過程,就可以看到一個類似於下面所示的構建頁面。
17)Jenkins通過讀取unittest架構產生的測試檔案,在頁面上顯示測試結果和其他各項指標。單擊構建頁面上的測試結果(Test Results)連結可以查看Jenkins儲存的測試結果。
18)之前配置的測試結果以JUnit格式產生。當單擊測試結果(Test Results)時,Jenkins將會顯示JUnit測試結果,如所示,顯示測試結果摘要,其中失敗的測試會高亮顯示。
19)我們也可以單擊Package名字的連結來查看各個測試的詳細結果資訊,如所示:
20)Jenkins還會以所示的格式在Dashboard首頁上顯示所有構建作業的最終狀態資訊。
綜上所述,通過搭建Jenkins運行Python Selenium測試,從而實現每天晚上在無人值守的情況下自動構建程式和執行測試。即實現了簡單的持續整合測試。
Jenkins持續整合項目搭建與實踐——基於Python Selenium自動化測試(自由式饒舌)