手把手教你搭建Pytest+Allure2.X環境詳細教程,生成讓你一見鍾情的測試報告(非常詳細,非常實用)
- 2019 年 10 月 3 日
- 筆記
簡介
宏哥之前在做接口自動化的時候,用的測試報告是HTMLTestRunner,雖說自定義模板後能滿足基本訴求,但是仍顯得不夠檔次,高端,大氣,遂想用其他優秀的report框架替換之。一次偶然的機會,在一個QQ群里看到Allure的測試報告,真的是一見鍾情,特別的喜歡。但是由於時間的原因就沒有自己實踐一下,乘着國慶假期,自己特抽時間做了一番探索。
Allure介紹
Allure是一種靈活的輕量級多語言測試報告工具,它不僅可以以簡潔的Web報告形式非常簡潔地顯示已測試的內容,而且還允許參與開發過程的每個人從日常執行中提取最大程度的有用信息。
從開發/質量保證的角度來看,Allure報告可以縮短常見缺陷的生命周期:可以將測試失敗劃分為bug和殘破的測試,還可以配置日誌,步驟,固定裝置,附件,時間,歷史記錄以及與TMS的集成以及Bug跟蹤系統,因此負責任的開發人員和測試人員將掌握所有信息。
從管理者的角度來看,Allure提供了一個清晰的“全局”,涵蓋了所涵蓋的功能,缺陷聚集的位置,執行時間表的外觀以及許多其他方便的事情。魅力的模塊化和可擴展性確保您始終可以微調某些東西,以使魅力更適合您。
一睹Allure風采
在展開Allure詳述前,先上一份測試報告,報告主要包含總覽、類別、測試套件、圖表、時間刻度、功能、包等7大部分,支持自定義諸多信息,包括附件添加、缺陷鏈接、案例鏈接、測試步驟、Epic、Feature、Story、Title、案例級別等,相當強大。
想要詳細了解Allure的小夥伴和童鞋們,可以訪問這個網址:https://demo.qameta.io/allure
總覽

類別

測試套

圖表

時間刻度

功能

1. pytest的安裝:(這裡着重介紹Windows)
pytest
是python
的一個第三方單元測試框架,在這裡用於生成原始的執行結果。
一定別選最新的,4.0.2親測可用,否則會跳到坑二;還有項目名千萬別以pytest開頭
1.1. windows下:
pip install pytest
出現如下圖所示,pytest安裝成功
1.2. linux下:
pip install pytest
2. 安裝pytest-allure-adaptor插件
據了解,安裝pytest-allure-adaptor
。這個第三方庫已經過時了,無法和現有的pytest
搭配使用。宏哥這個先安裝後期遇到問題再去處理。
最新的安裝需要下面這個:
allure-pytest是python的一個第三方庫。用於連接pytest和allure,使它們可以配合在一起使用。
allure-pytest基於pytest的原始執行結果生成適用於allure的json格式結果。該json格式結果可以用於後續適用allure生成html結果。
2.1. windows下:
pip install pytest-allure-adaptor
出現如下圖所示,pytest-allure-adaptor安裝成功
3. allure的安裝:
3.1. windows下:
前情提示: allure
是基於Java
的一個程序,需要Java1.8+
的環境,沒有安裝需要去安裝一下。
或者到這個網址:https://github.com/allure-framework/allure2/releases/ 、https://bintray.com/qameta/generic/allure2下載你需要的版本的安裝包
下載之後,將壓縮包解壓到一個磁盤中,我這裡用的是D盤

3.2. 配置allure
的環境變量

將此路徑:D:softwareallure-2.13.0bin,用老辦法配置到path中

點擊確定,保存。這樣就可以通過CMD
使用allure
命令
3.3. 編寫測試文件
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
3.4. 生成測試報告
在pycharm
中打開terminal

輸入命令pytest -s --alluredir=report
運行後,無上述錯誤,同時會生成一個report
文件。其中會有一個json
格式的報告:

allure
將它轉成HTML
格式的報告。通過cmd
命令cd
到report
的根目錄下,執行allure generate --clean report

回到根目錄下,會生成一個allure-report
的文件夾,在pycharm
中打開文件夾,點擊index.html
運行

ok,到此為止。可以看到我們的精美的測試報告了

注⚠️:直接用chrome瀏覽器打開報告,報告可能會是空白頁面。
解決辦法:
1、在pycharm中右擊index.html選擇打開方式Open in Browser就可以了。
2、使用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))

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點擊右邊的小球即可!(^__^) 嘻嘻……)