從零開始搭建一個簡單的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的界面:

image

安裝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---系統管理---全局工具配置,如下圖配置好(不要完全照抄哦,參數是本地的話需要填你本地的路徑):

image

image

再進入jenkins---系統管理---系統設置,拉到最下面,設置問題追蹤,在Allure Report 下選擇增加

Key: allure.issues.tracker.pattern Value: http://tracker.company.com/%s

如圖配置:


image

最后進入jenkins---系統管理---腳本命令行,輸入如下命令執行權限代碼,點擊執行

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")

,如圖配置:

image

這樣我們在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即可。

現在,項目構建完之后就會自動把報告的地址發送給你預定的郵箱。

郵件內容:

image

參考資料

  1. Python + Allure(報告)+ Jenkins(持續集成)接口自動化測試環境搭建
  2. allure--開源 report 框架階段性總結介紹
  3. Allure2-開源 report 框架介紹 (Allure+Jenkins)
  4. Allure Report
  5. Jenkins 郵件配置 (使用 Jenkins Email Extension Plugin)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容