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頁面。為了實踐,我將重用之前創建的百度冒煙測試。
我使用了unittest的TestSuite Runner批量執行測試,並以JUnit報告的格式輸出測試結果。這里需要用到Python下的xmlrunner庫。執行以下命令下載與安裝xmlrunner。
pip install xmlrunner
百度冒煙測試腳本在通過TestSuite Runner運行homepagetests.py和searchtests.py兩個腳本中的測試。最后用xmlrunner.XMLTestRunner來運行冒煙測試並生成JUnit測試報告。此報告以XML格式生成,保存在test-reports子文件夾中。代碼如下:
生成的XML格式的report如下:
搭建Jenkins
搭建Jenkins簡單。下載系統平台的Jenkins包並進行安裝。下面我將安裝並啟動Jenkins,然后創建一個新的構建作業以對上面的腳本進行在無人值守的情況下按照預定的時間調度運行(百度冒煙測試)。
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)文本框里輸入以下命令,如下圖所示。這個命令將冒煙測試的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測試,從而實現每天晚上在無人值守的情況下自動構建程序和執行測試。即實現了簡單的持續集成測試。