一、簡介
pytest+allure+jenkins進行介面測試、生成測試報告、結合jenkins進行整合。
pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高
allure-pytest是python的一個第三方庫。用於連線pytest和allure,使它們可以配合在一起使用。
allure-pytest基於pytest的原始執行結果生成適用於allure的json格式結果。該json格式結果可以用於後續適用allure生成html結果。
二、安裝
1、安裝pytest,命令列或終端中輸入
1 pip install pytest
2、安裝allure-pytest,安裝成功
1 pip install allure-pytest
allure-pytest安裝成功後截圖如下。
3、下載安裝JDK
官方下載:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
安裝與配置不作闡述請諒解
4、下載安裝Jenkins
安裝與配置不作闡述請諒解
三、下載Allure並配置
下載allure並配置
1、allure官網下載:https://github.com/allure-framework/allure2/releases
如下圖所示
2、allure2下載下來是一個zip的壓縮包,我們要解壓至自己的檔案目錄下(可解壓放至專案的測試用例下或python安裝目錄下),自己可找到檔案即可。
3、開啟allure2目錄,找到bin目錄,複製bin檔案目錄, 然後進行環境變數的配置,設定環境變數的目的就是讓系統無論在哪個目錄下都可以執行allure2。
4、環境變數設定:(桌面——我的電腦——右鍵屬性——高階系統配置——環境變數——系統變數——Path——編輯環境變數——把我們上面複製的目錄路徑新增至環境變數中即可)
設定環境變數,如下圖所示。
5、配置好後,開啟cmd終端,輸入allure,出現以下幫助文件,就說明配置成功了。
四、Allure裝飾器描述
Allure裝飾器
五、Pytest+Allure的應用
上述我們講了一些理論的知識,下面我們就來實戰練習一下吧。進一步理解Pytest+allure如何結合應用的。
1、新建testcase資料夾,用來存放測試用例,新建test_Demo.py檔案,作為pytest的具體測試用例檔案。在test_Demo.py檔案中輸入以下程式碼。
1 # test_Demo.py 2 # Creator:wuwei 3 # Date:2020-06-09 4 5 import pytest 6 import requests 7 import allure 8 import sys 9 sys.dont_write_bytecode = True 10 11 @allure.epic('測試描述'.center(30, '*')) 12 @allure.feature('測試模組') 13 @allure.suite('測試套件') 14 class TestPytestOne(): 15 @allure.story('使用者故事描述:用例一') 16 @allure.title('測試標題:用例一') 17 @allure.description('測試用例描述:用例一') 18 @allure.testcase('測試用例地址:https://www.baidu.com/') 19 @allure.tag('測試用例標籤:用例一') 20 def test_one(self): 21 print('執行第一個用例') 22 assert 1 == 1 23 24 @allure.story('使用者故事描述:用例二') 25 @allure.title('測試標題:用例二') 26 @allure.description('測試用例描述:用例二') 27 @allure.testcase('測試用例地址:https://www.sogou.com/') 28 @allure.tag('測試用例標籤:用例二') 29 def test_two(self,action): 30 print('執行第二個用例') 31 assert True == True 32 33 # pytest執行 34 if __name__ == "__main__": 35 pytest.main(['-s', '-v', 'test_Demo.py', '-q', '--alluredir', '../reports'])
2、我們再來建立一個conftest.py,conftest用來共享資料及不同層次之間共享使用的檔案,測試用例的前置和後置中一般都可以用到的。
1 # conftest.py 2 # Creator:wuwei 3 # Date:2020-06-09 4 5 import pytest 6 import sys 7 sys.dont_write_bytecode = True 8 9 @pytest.fixture() 10 def action(): 11 print("測試用例開始".center(30, '*')) 12 yield 13 print("測試用例結束".center(30, '*'))
3、執行test_Demo.py檔案,test_Demo檔案中已經pytest+allure的結合,可檢視allure的執行結果,可看出在根目錄中生成了一個reports資料夾,其中生成了測試報告的json檔案,這裡面的json檔案可通過allure生成html的測試報告。
執行test_Demo.py,終端顯示如下圖所示。
生成的Json格式的測試報告,如下圖所示。
4、使用allure將json檔案生成html的測試報告,定位至專案檔案根目錄下,執行以下命令,會在專案根目錄下生成一個名為allure_reports的資料夾,用來存放html測試報告。命令下如所示。
1 allure generate reports -o allure_reports/
成功執行allure,結果如下圖所示。
專案根目錄下的allure_reports檔案,存放的是allure生成的測試報告。可看出檔案下有一個HTML檔案,可通過Python的編輯器Pycharm來開啟該HTML檔案(測試報告),或可通過allure命令來開啟該HTML,展示HTML測試報告。如下所示。
測試報告檔案,HTML測試報告如下。
allure命令開啟HTML測試報告。命令如下所示。
1 allure open allure_reports/
如下圖所示。
開啟生成的HTML測試報告如下圖所示。
六、Pytest+Allure+Jenkins的應用
1、Jenkins外掛網站上下載allure外掛最新版本:
http://mirrors.jenkins-ci.org/plugins/allure-jenkins-plugin/
2、Jenkins的安裝我已經在Postman+Newman+Git+Jenkins的篇章中講過了,沒看小夥伴可以看一下那篇文章。確認Jenkins服務是否開啟。確認開啟後,在瀏覽器中輸入:http://localhost:8080/,進入Jenkins配置頁面。
3、http://localhost:8080/,登入Jenkins的頁面,在管理Jenkins——外掛管理——高階中找到上傳外掛。將(1)步驟中下載的.hpi的檔案上傳至jenkins上。
上傳安裝好的allure-jenkins-plugin的外掛,安裝完成併成功,是藍色圓點顯示,因我已經安裝過一次,會提示已經安裝,重啟Jenkins即可生效。(注意:不是關閉瀏覽器重新開啟,而是重啟Jenkins服務)
4、全域性變數中配置allure路徑與JDK的路徑,
配置JDK安裝的路徑,如下圖所示。
配置allure安裝的路徑,如下圖所示。
5、新建Item,配置構建後的allure測試報告生成。這裡配置Pytest執行完成之後,生成的allure檔案所在的目錄位置。
專案中生成allure的json測試報告的位置。需與下面構建後操作中的Results的Path檔案一致。
構建後操作的allure生成測試報告的配置,如下圖所示
6、配置構建命令。就是上述在cmd中執行專案時的命令。如下圖所示。
注意:執行後發現有報錯。“Build step 'Execute Windows batch command' marked build as failure”,解決方案,在執行專案的命令後新增exit 0。如下圖所示。
7、修改執行命令後我們再來執行一下。我們可發現執行後,allure裡面沒任務資料。因為我們還沒設定執行的專案路徑。設定工作空間,開啟工作空間目錄,將我們的專案複製到jenkins的工作目錄中。
我們可將程式碼傳至GitHub上,在Jenkins中設定相關Github專案的配置,也可進行Jenkins部署。我在Postman+Newman+Git+Jenkins這篇部落格裡就應用到了。有興趣的可參考看看這篇Jenkins如何Git專案。在這裡我們使用本地專案來部署。
測試報告無資料因為工作空間裡面沒有專案配置。
複製專案至Jenkins工作空間的目錄中。
8、新增專案後,我們再執行一下,藍點則為執行成功,可看到後面已經生成了allure的測試報告了。可直接點選後面的alluree圖示跳轉至HTML的測試報告。如下圖所示。
allure生成的HTML測試報告
八、總結
上述我們聊了下pytest+allure+jenkins如何結合整合一起使用的,本地啟動jenkins,執行專案,呼叫allure生成測試報告。也簡單的做了一個小Demo。後期我將結合Requests介面測試和seleniumWeb測試應用至具體專案中。