jenkins實(shí)現(xiàn)接口自動化持續(xù)集成(python+pytest+ Allure+git)

本文首發(fā)于:行者AI

在用python做自動化測試時(shí)昧碉,我們寫好代碼忘巧,然后需要執(zhí)行才能得到測試報(bào)告,這時(shí)我們可以通過 Jenkins 來進(jìn)一步完成自動化工作啤咽。借助Jenkins奥洼,我們可以結(jié)合 Git/SVN 自動拉取代碼摇予,通過設(shè)置定時(shí)構(gòu)建實(shí)現(xiàn)自動觸發(fā)腳本執(zhí)行搀擂,得到測試報(bào)告,最后還可以配置發(fā)送郵件等卷玉。今天我們就來分享下哨颂,如何結(jié)合 Git自動拉取代碼,通過構(gòu)建來自動執(zhí)行python腳本輸出測試報(bào)告揍庄。

Jenkins是開源的咆蒿,使用Java編寫的持續(xù)集成工具。需要安裝JDK蚂子,如果已經(jīng)安裝了JDK可以跳過該步驟沃测。

1. 安裝JDK

去官網(wǎng)下載JDK:
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html

將下載好的壓縮包放在Linux上

然后解壓Java到相應(yīng)目錄:

輸入命令:tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz /home/java

如果提示沒有tar命令,輸入yum install -y tar食茎,先安裝tar

編輯環(huán)境變量蒂破,在/etc/profile文件中添加環(huán)境變量:

輸入命令:vim /etc/profile

在文件最后添加內(nèi)容如下,然后保存:

JAVA_HOME=/home/java/jdk-11.0.8
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH

輸入命令source /etc/profile别渔,刷新環(huán)境變量配置文件使其立刻生效

到此附迷,JDK已經(jīng)安裝完成。輸入java -version查看是否安裝成功哎媚,出現(xiàn)如下圖即安裝成功喇伯。

PS:建議建一個(gè)Java的超鏈接。建立之后默認(rèn)情況下從/usr/bin/java路徑使用Java拨与,yum安裝的時(shí)候稻据,這個(gè)鏈接會自動創(chuàng)建。

輸入命令ln -s /home/java/jdk-11.0.8/bin/java /usr/bin/java

2. 安裝Jenkins

官網(wǎng):https://www.jenkins.io/download/ 選擇對應(yīng)的操作系統(tǒng)或者使用yum方式安裝买喧,這里我使用的是yum捻悯,因?yàn)楸容^方便:

yum的repos中默認(rèn)是沒有Jenkins的,所以我們需要先將Jenkins存儲庫添加到y(tǒng)um repos中淤毛。

點(diǎn)擊官網(wǎng)中【CentOS/Fedora/Red Hat】系統(tǒng)今缚,然后將命令復(fù)制粘貼到Linux系統(tǒng)中。

之后就可以看到系統(tǒng)開始自動下載安裝低淡。若出現(xiàn)提示是否下載輸入:y并按回車姓言。耐心等待安裝完成。

啟動Jenkins蔗蹋,命令:service jenkins start事期,出現(xiàn)ok表示Jenkins啟動成功。

在瀏覽器輸入ip:8080進(jìn)入Jenkins登錄頁面纸颜,輸入密碼兽泣。至此,Jenkins安裝完成胁孙。

3. Job配置

新建一個(gè)自由風(fēng)格的項(xiàng)目

進(jìn)入工程配置頁面唠倦,在源碼管理下称鳞,選擇Git:

如果源碼管理中沒有Git鸥诽,說明你沒有安裝Git插件覆旭。點(diǎn)擊【Manage Jenkins】皮钠,選擇【Manage Plugins】馁菜,選擇【可選插件】,在【搜索框】中輸入git plugin茶没,下載該插件秒咨。

安裝成功如圖所示稚瘾,然后重啟【Jenkins】:

構(gòu)建執(zhí)行shell慌盯,根據(jù)自己的腳本輸入pytest命令周霉。也就是說Jenkins將Git倉庫代碼下載之后,我們要怎么通過命令去執(zhí)行腳本亚皂,這個(gè)根據(jù)自己執(zhí)行腳本的情況填寫即可俱箱,這里和我們手工執(zhí)行腳本的操作是一致的,然后點(diǎn)擊保存灭必。

點(diǎn)擊【Build Now[立即構(gòu)建]】狞谱,可以看到正在執(zhí)行的構(gòu)建Job

4. 測試報(bào)告

當(dāng)用例執(zhí)行完成之后,我們想看用例執(zhí)行的情況禁漓,而pytest不僅支持pytest-html插件跟衅,還可以使用allure生成更加美觀的測試報(bào)告。Allure框架是一個(gè)靈活的輕量級多語言測試報(bào)告工具播歼,它不僅以web的方式展示了簡介的測試結(jié)果与斤,而且允許參與開發(fā)過程的每個(gè)人從日常執(zhí)行的測試中最大限度的提取有用信息。所以我們這里選擇的是Allure框架荚恶。

從dev/qa的角度來看,Allure報(bào)告簡化了常見缺陷的統(tǒng)計(jì):失敗的測試可以分為bug和被中斷的測試磷支,還可以配置日志谒撼、步驟、fixture雾狈、附件廓潜、計(jì)時(shí)、執(zhí)行歷史以及與TMS和BUG管理系統(tǒng)集成善榛,所以辩蛋,通過以上配置,所有負(fù)責(zé)的開發(fā)人員和測試人員可以盡可能的掌握測試信息移盆。

從管理者的角度來看悼院,Allure提供了一個(gè)清晰的“大圖”,其中包括已覆蓋的特性咒循、缺陷聚集的位置据途、執(zhí)行時(shí)間軸的外觀以及許多其他方便的事情绞愚。allure的模塊化和可擴(kuò)展性保證了您總是能夠?qū)δ承〇|西進(jìn)行微調(diào),使Allure更適合您颖医,那么今天我們就來說說如何使報(bào)告更加詳細(xì)的顯示我們需要的信息位衩,以及allure與jenkins的集成。

4.1 下載Allure插件與配置Allure

點(diǎn)擊【Manage Jenkins】熔萧,選擇【Manage Plugins】糖驴,選擇【可選插件】,在【搜索框】中輸入Allure佛致,下載該插件贮缕。下載成功之后重啟Jenkins。

進(jìn)入全局工具配置【Global Tool Configuration】晌杰,下拉最后一項(xiàng)跷睦,會看到【Allure Commandline】項(xiàng),按下圖配置之后保存即可:

進(jìn)入配置肋演,點(diǎn)擊【構(gòu)建后操作(Post-build Actions)】抑诸,選擇Allure Report

Results:輸入Path路徑,這里的path路徑表示在項(xiàng)目根目錄下生成此文件夾爹殊,文件夾用來保存生成html報(bào)告之前所依賴的json蜕乡,xml,txt等類型文件梗夸。

Report path:輸入保存html報(bào)告路徑层玲。

點(diǎn)擊【Build Now[立即構(gòu)建]】,執(zhí)行結(jié)束之后可以看到生成的Allure報(bào)告

4.2 Allure報(bào)告展示

5. 發(fā)送郵件

Jenkins默認(rèn)提供了一個(gè)郵件通知E-mail Notification反症,但功能有很多的局限性辛块,不夠靈活。比如:無法定義郵件的格式铅碍、郵件通知無法提供詳細(xì)的郵件內(nèi)容润绵。在這里我們使用Email Extension Plugin插件。該插件能夠允許你自定義郵件發(fā)送的具體內(nèi)容胞谈、郵件格式等尘盼。

5.1 下載Email插件與配置Email

點(diǎn)擊【Manage Jenkins】,選擇【Manage Plugins】烦绳,選擇【可選插件】卿捎,在【搜索框】中輸入Email Extension Plugin,下載該插件径密。下載成功之后重啟Jenkins午阵。

進(jìn)入系統(tǒng)設(shè)置【System Configuration】,找到【Jenkins Location】,設(shè)置Jenkins URL與發(fā)件人的郵件地址

找到“Extended E-mail Notification”享扔,設(shè)置以下內(nèi)容:

詳細(xì)參數(shù)介紹:

Override Global Settings:如果不選趟庄,該插件將使用默認(rèn)的E-mail Notification通知選項(xiàng)括细。反之,可以通過指定不同于的設(shè)置來進(jìn)行覆蓋戚啥。 
Default Content Type:指定構(gòu)建后發(fā)送郵件內(nèi)容的類型奋单,有Text和HTML兩種。 
Use List-ID Email Header:為所有的郵件設(shè)置一個(gè)List-ID的郵件信頭猫十。 
Add 'Precedence: bulk' Email Header:設(shè)置優(yōu)先級览濒。 
Default Recipients:自定義默認(rèn)電子郵件收件人列表。 
Reply To List:回復(fù)列表拖云。 
Emergency reroute:如果這個(gè)字段不為空贷笛,所有的電子郵件將被單獨(dú)發(fā)送到該地址(或地址列表)。 
Excluded Committers:防止郵件被郵件系統(tǒng)認(rèn)為是垃圾郵件宙项,郵件列表應(yīng)該沒有擴(kuò)展的賬戶名(如:@domain.com)乏苦,并且使用逗號分隔。 
Default Subject:自定義郵件通知的默認(rèn)主題名稱尤筐。該選項(xiàng)能在郵件的主題字段中替換一些參數(shù)汇荐,這樣就可以在構(gòu)建中包含指定的輸出信息。 
Maximum Attachment Size:郵件最大附件大小盆繁。 
Default Content:自定義郵件通知的默認(rèn)內(nèi)容主體掀淘。該選項(xiàng)能在郵件的內(nèi)容中替換一些參數(shù),這樣就可以在構(gòu)建中包含指定的輸出信息油昂。 
Default Pre-send Script:默認(rèn)發(fā)送前執(zhí)行的腳本革娄。 
Enable Debug Mode:啟用插件的調(diào)試模式。 
nable Security:啟用時(shí)冕碟,會禁用發(fā)送腳本的能力拦惋,直接進(jìn)入Jenkins實(shí)例。如果用戶試圖訪問Jenkins管理對象實(shí)例安寺,將拋出一個(gè)安全異常厕妖。 
Content Token Reference:郵件中可以使用的變量,所有的變量都是可選的我衬。

進(jìn)入配置,點(diǎn)擊【構(gòu)建后操作(Post-build Actions)】饰恕,找到【Extended E-mail Notification】挠羔,設(shè)置以下內(nèi)容:

觸發(fā)器參數(shù)說明

Failure:即時(shí)發(fā)送構(gòu)建失敗的郵件。如果”Still Failing”觸發(fā)器已配置埋嵌,而上一次構(gòu)建的狀態(tài)是”Failure”破加,那么”Still Failing”觸發(fā)器將發(fā)送一封郵件來替代(它)。 
Unstable:即時(shí)發(fā)送構(gòu)建不穩(wěn)固的郵件雹嗦。如果”Still Unstable”觸發(fā)器已配置范舀,而上一次構(gòu)建的狀態(tài)是”Unstable”合是,那么”Still Unstable”觸發(fā)器將發(fā)送一封郵件來替代(它)。 
Still Failing:如果兩次或兩次以上連續(xù)構(gòu)建的狀態(tài)為”Failure”锭环,發(fā)送該郵件聪全。 
Success:如果構(gòu)建的狀態(tài)為”Successful”發(fā)送郵件。如果”Fixed”已配置辅辩,而上次構(gòu)建的狀態(tài)為“Failure”或“Unstable”难礼,那么”Fixed”觸發(fā)器將發(fā)送一封郵件來替代(它)。 
Fixed:當(dāng)構(gòu)建狀態(tài)從“Failure”或“Unstable”變?yōu)椤盨uccessful”時(shí)發(fā)送郵件玫锋。 
Still Unstable:如果兩次或兩次以上連續(xù)構(gòu)建的狀態(tài)為” Unstable “蛾茉,發(fā)送該郵件。 
Before Build:當(dāng)構(gòu)建開始時(shí)發(fā)送郵件撩鹿。 

點(diǎn)擊【Build Now[立即構(gòu)建]】谦炬,執(zhí)行結(jié)束之后。如果執(zhí)行成功节沦,將不會發(fā)送郵件給收件人键思;如果執(zhí)行失敗,將會發(fā)送一封郵件給收件人散劫,郵件內(nèi)容根據(jù)自己情況自定義稚机。

5.2 郵件展示

6. 總結(jié)

本文主要描述了通過Git自動拉取代碼,然后Jenkins構(gòu)建自動執(zhí)行python腳本輸出測試報(bào)告获搏,如果執(zhí)行失敗赖条,通過郵件自動將測試報(bào)告發(fā)送給收件人。 后期還有許多優(yōu)化的地方常熙,希望和大家一起來探討纬乍。


我們是行者AI,我們在“AI+游戲”中不斷前行裸卫。

如果你也對游戲感興趣仿贬,對AI充滿好奇,就快來加入我們吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墓贿,一起剝皮案震驚了整個(gè)濱河市茧泪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聋袋,老刑警劉巖队伟,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幽勒,居然都是意外死亡嗜侮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锈颗,“玉大人顷霹,你說我怎么就攤上這事』髦ǎ” “怎么了淋淀?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姨拥。 經(jīng)常有香客問我绅喉,道長,這世上最難降的妖魔是什么叫乌? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任柴罐,我火速辦了婚禮,結(jié)果婚禮上憨奸,老公的妹妹穿的比我還像新娘革屠。我一直安慰自己,他們只是感情好排宰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布似芝。 她就那樣靜靜地躺著,像睡著了一般板甘。 火紅的嫁衣襯著肌膚如雪党瓮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天盐类,我揣著相機(jī)與錄音寞奸,去河邊找鬼。 笑死在跳,一個(gè)胖子當(dāng)著我的面吹牛枪萄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猫妙,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼瓷翻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了割坠?” 一聲冷哼從身側(cè)響起齐帚,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彼哼,沒想到半個(gè)月后对妄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沪羔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年饥伊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔫饰。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琅豆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出篓吁,到底是詐尸還是另有隱情茫因,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布杖剪,位于F島的核電站冻押,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盛嘿。R本人自食惡果不足惜洛巢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望次兆。 院中可真熱鬧稿茉,春花似錦、人聲如沸芥炭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽园蝠。三九已至渺蒿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彪薛,已是汗流浹背茂装。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陪汽,地道東北人训唱。 一個(gè)月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像挚冤,于是被迫代替她去往敵國和親况增。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容