Pytest單元測試框架——Pytest+Allure+Jenkins的應用

wuwei丶發表於2020-06-09

一、簡介

  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

  官方下載:https://www.jenkins.io/

  安裝與配置不作闡述請諒解

三、下載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測試應用至具體專案中。

 

相關文章