宏哥以前在作接口自動化的時候,用的測試報告是HTMLTestRunner,雖然說自定義模板後能知足基本訴求,可是仍顯得不夠檔次,高端,大氣,遂想用其餘優秀的report框架替換之。一次偶然的機會,在一個QQ羣裏看到Allure的測試報告,真的是一見傾心,特別的喜歡。可是因爲時間的緣由就沒有本身實踐一下,乘着國慶假期,本身特抽時間作了一番探索。html
Allure是一種靈活的輕量級多語言測試報告工具,它不只能夠以簡潔的Web報告形式很是簡潔地顯示已測試的內容,並且還容許參與開發過程的每一個人從平常執行中提取最大程度的有用信息。python
從開發/質量保證的角度來看,Allure報告能夠縮短常見缺陷的生命週期:能夠將測試失敗劃分爲bug和殘破的測試,還能夠配置日誌,步驟,固定裝置,附件,時間,歷史記錄以及與TMS的集成以及Bug跟蹤系統,所以負責任的開發人員和測試人員將掌握全部信息。linux
從管理者的角度來看,Allure提供了一個清晰的「全局」,涵蓋了所涵蓋的功能,缺陷彙集的位置,執行時間表的外觀以及許多其餘方便的事情。魅力的模塊化和可擴展性確保您始終能夠微調某些東西,以使魅力更適合您。git
在展開Allure詳述前,先上一份測試報告,報告主要包含總覽、類別、測試套件、圖表、時間刻度、功能、包等7大部分,支持自定義諸多信息,包括附件添加、缺陷連接、案例連接、測試步驟、Epic、Feature、Story、Title、案例級別等,至關強大。github
想要詳細瞭解Allure的小夥伴和童鞋們,能夠訪問這個網址:https://demo.qameta.io/allureweb
pytest
是python
的一個第三方單元測試框架,在這裏用於生成原始的執行結果。chrome
必定別選最新的,4.0.2親測可用,不然會跳到坑二;還有項目名千萬別以pytest開頭json
pip install pytest
出現以下圖所示,pytest安裝成功windows
pip install pytest
據瞭解,安裝pytest-allure-adaptor
。這個第三方庫已通過時了,沒法和現有的pytest
搭配使用。宏哥這個先安裝後期遇到問題再去處理。瀏覽器
最新的安裝須要下面這個:
allure-pytest是python的一個第三方庫。用於鏈接pytest和allure,使它們能夠配合在一塊兒使用。
allure-pytest基於pytest的原始執行結果生成適用於allure的json格式結果。該json格式結果能夠用於後續適用allure生成html結果。
pip install pytest-allure-adaptor
出現以下圖所示,pytest-allure-adaptor安裝成功
前情提示: allure
是基於Java
的一個程序,須要Java1.8+
的環境,沒有安裝須要去安裝一下。
或者到這個網址:https://github.com/allure-framework/allure2/releases/ 、https://bintray.com/qameta/generic/allure2下載你須要的版本的安裝包
下載以後,將壓縮包解壓到一個磁盤中,我這裏用的是D盤
allure
的環境變量
將此路徑:D:\software\allure-2.13.0\bin,用老辦法配置到path中
點擊肯定,保存。這樣就能夠經過CMD
使用allure
命令
pycharm
新建一個test_demo.py
文件,代碼以下:
# coding=utf-8 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-9-29 @author: 北京-宏哥 QQ交流羣:707699217 Project:手把手教你搭建Pytest+Allure2.X環境詳細教程,生成讓你一見傾心的測試報告(很是詳細,很是實用) ''' # 3.導入模塊 import allure # @allure.MASTER_HELPER.feature("測試Dome") @allure.feature("測試Demo") class TestDome(object): #@@allure.MASTER_HELPER.step("定義被測函數") @allure.step("定義被測函數") def func(self, x): return x+1 #@allure.MASTER_HELPER.story("被測場景") @allure.story("被測場景") #@allure.MASTER_HELPER.severity("blocker") @allure.severity("blocker") #@allure.MASTER_HELPER.step("斷言結果") @allure.step("斷言結果") def test_func(self): # with allure.MASTER_HELPER.step("斷言結果"): #allure.MASTER_HELPER.attach("預期結果", "{}".format(self.func(3))) allure.attach("預期結果", "{}".format(self.func(3))) #allure.MASTER_HELPER.attach("實際結果", "{}".format(5)) allure.attach("實際結果", "{}".format(5)) assert self.func(3) == 5
在pycharm
中打開terminal
輸入命令pytest -s --alluredir=report
運行後,無上述錯誤,同時會生成一個report
文件。其中會有一個json
格式的報告:
allure
將它轉成
HTML
格式的報告。經過
cmd
命令
cd
到
report
的根目錄下,執行
allure generate --clean report
回到根目錄下,會生成一個allure-report
的文件夾,在pycharm
中打開文件夾,點擊index.html
運行
ok,到此爲止。能夠看到咱們的精美的測試報告了
注⚠️:直接用chrome瀏覽器打開報告,報告可能會是空白頁面。
解決辦法:
一、在pycharm中右擊index.html選擇打開方式Open in Browser就能夠了。
二、使用Chrome直接打開index.html。
1.安裝pytest-allure-adaptor後,運行報錯:AttributeError: module 'pytest' has no attribute 'allure'
緣由:由於pytest-allure-adaptor庫基本被python3放棄了,運行很不友好,反正我運行就是報錯
解決方法:
先卸載:pip uninstall pytest-allure-adaptor
再安裝:pip install allure-pytest
而後再去對應case的文件夾下面cmd裏面運行: pytest -s -q --alluredir report (能夠改成你想設的路徑,若是是report默認當前目錄下),就會生成report文件夾了
2.輸入命令pytest -s --alluredir=report
,會遇到如下這個錯誤:
進入allure
下面的utils
文件,修改如下代碼:
# utils文件,能夠經過from allure import utlis進入
for suitable_name in suitable_names: # markers.append(item.get_marker(suitable_name)) markers.append(item.get_closest_marker(suitable_name))
您的確定就是我進步的動力。若是你感受還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點擊右邊的小球便可!(^__^) 嘻嘻……)