本文會介紹如何從0到1構建Python項目的集成測試環境,文中會詳細說起部署過程當中會遇到的各類問題。html
部署環境爲MacOS,在Windows或Linux下能夠經過相似的方式部署與操做,此外也會給出對應的參考連接。python
首先須要安裝Jenkins,Jenkins依賴於JDK,因此須要先安裝Java JDK,這塊不贅述,隨後安裝Jenkins,在MacOS中能夠經過HomeBrew安裝。git
brew install jenkins
若是你brew install很慢,能夠參考本文最後的技巧[1]。github
固然,你能夠直接經過Docker進行安裝,jenkins在Docker Hub中提供了官方的源.docker
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
我使用brew安裝,安裝完後,使用以下命令運行jenkinsshell
$ jenkins
此時jenkins將會顯式的運行在命令行終端,而且建立~/.jenkins
目錄做爲JENKINS_HOME,localhost:8080做爲默認URL。編程
啓動時,Jenkins會給出初始的密碼,該密碼會在JENKINS_HOME的secrets/initialAdminPassword中。windows
登陸後,Jenkins會要求你安裝一些插件,此時出現第一個坑,安裝插件速度極慢,能夠參考技巧[2]來解決這個問題,經過技巧[2]修改配置後,能夠經過技巧[3]來重啓Jenkinsbash
Jenkins安裝有幾個關鍵點。編程語言
allure是一種支持多種編程語言的可視化測試報告工具,allure在jenkins中的插件讓Jenkins能夠輕鬆調用allure(有坑),而allure在pytest的插件主要是爲了讓pytest能夠生成知足allure要求的測試信息文件。
經過allure插件,將jenkins、pytest、allure連接在一塊兒,pytest負責測試,測試生成的報告能夠經過allure生成圖像化界面,而jenkins自動化兩個過程。
在MacOS中,allure一樣經過經過Homebrew安裝。
brew install allure
allure在Windows與Linux的安裝方式參考:https://github.com/allure-fra...
allure安裝完後,先來安裝allure關於pytest的插件,順帶將pytest也安裝了。
pip install pytest==5.3.5 pip install allure-pytest==2.8.9 pip install allure-python-commons==2.8.9
安裝完後,能夠先來使用一下。
找一個使用Pytest的項目,直接去github拉取requests庫,它的tests目錄寫滿了經過pytest構建的測試用例。
經過pytest運行requests/tests中的代碼並經過--alluredir指定生成數據的文件夾,這些數據就是allure可讀取的數據,一般爲一堆JSON文件。
pytest requests/tests --alluredir=./allure-results
得到JSON文件數據後,能夠經過allure generate命令來生成HTML測試報告界面。
allure generate allure-results -o allure-report --clean
經過上述命令,allure會將測試報告生成到allure-report目錄中,至此整個流程走通了一半。
接着來安裝Allure在Jenkins中的插件。
進入Jenkins的插件管理界面,安裝「Allure Jenkins Plugin」,此外爲了更好的顯示HTML測試報告,繼續安裝「HTML Publisher Plugin」。
「Allure Jenkins Plugin」安裝完後,還須要進行配置,進入「系統設置」->「Global Tool Configuration」。
進行以下配置,From Maven Central選擇了當前最新版2.13.1。
配置完後,將Jenkins重啓,讓Jenkins加載最新安裝的插件。
Jenkins插件安裝完後,在Jenkins中建立Freestyle project,Description描述能夠隨便填寫,在Build構建處,選擇Execute Shell,若是你是windows,則選擇Execute Windows batch command。
由於我在MacOS下執行,因此選擇Execute Shell,輸入以下Shell代碼
#!/bin/bash cd /Users/ayuliao/Desktop/workspace/CICD source venv/bin/activate pytest requests/tests --alluredir "${WORKSPACE}/target/allure-results" exit 0
cd進入相應的目錄,而後經過source激活相應的Python虛擬環境,我只在該虛擬環境中安裝了pytest庫,隨後正常使用pytest則可,此時依舊使用pytest來跑requests/tests中的測試代碼,但--alluredir設置的路徑很是有講究。
簡單而言, --alluredir必須爲"${WORKSPACE}/target/allure-results"
,由於Jenkins經過插件調用allure genera命令時,傳入的路徑固定爲${WORKSPACE}/target/allure-results
。
${WORKSPACE}
是Jenkins內置的變量,表示「分配給構建做爲工做空間的目錄的絕對路徑。」。
若是--alluredir爲其餘值,經過Jenkins構建項目時,會拋出allure-results does not exists
,你能夠在「https://github.com/jenkinsci/...」看見問題的具體細節。
此外,還須要配置Post-build Actions構建後的動做,這裏也很是關鍵。
選擇「Allure Report」,將Results與Report Path分別配置成target/allure-results
與target/allure-report
,這是固定的,不要看其註釋說你能夠隨意配置。
上述配置之因此是固定的,須要看Jenkins Job中的console output,jenkins調用allure generate命令是固定的。
$ /Users/ayuliao/.jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/allure generate "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-results" -c -o "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-report"
若是將Results與Report Path配置成其餘值,會出現各類問題。
至此大功告成。