本文首發(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充滿好奇,就快來加入我們吧~