1. 程式人生 > >手把手教你搭建Pytest+Allure2.X環境詳細教程,生成讓你一見鍾情的測試報告(非常詳細,非常實用)

手把手教你搭建Pytest+Allure2.X環境詳細教程,生成讓你一見鍾情的測試報告(非常詳細,非常實用)

簡介

 巨集哥之前在做介面自動化的時候,用的測試報告是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)

pytestpython的一個第三方單元測試框架,在這裡用於生成原始的執行結果。

一定別選最新的,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+的環境,沒有安裝需要去安裝一下。

Windows下不能直接安裝,點選此連結下載壓縮包

或者到這個網址:https://github.com/allure-framework/allure2/releases/  、https://bintray.com/qameta/generic/allure2下載你需要的版本的安裝包

下載之後,將壓縮包解壓到一個磁碟中,我這裡用的是D盤

3.2. 配置allure的環境變數

 

 

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

 

點選確定,儲存。這樣就可以通過CMD使用allure命令

3.3. 編寫測試檔案

pycharm新建一個test_demo.py檔案,程式碼如下:

import allure


@allure.MASTER_HELPER.feature("測試Dome")
class TestDome(object):

    @allure.MASTER_HELPER.step("定義被測函式")
    def func(self, x):
        return x+1

    @allure.MASTER_HELPER.story("被測場景")
    @allure.MASTER_HELPER.severity("blocker")
    @allure.MASTER_HELPER.step("斷言結果")
    def test_func(self):
        # with allure.MASTER_HELPER.step("斷言結果"):
        allure.MASTER_HELPER.attach("預期結果", "{}".format(self.func(3)))
        allure.MASTER_HELPER.attach("實際結果", "{}".format(5))
        assert self.func(3) == 5

3.4. 生成測試報告

pycharm中開啟terminal

 輸入命令pytest -s --alluredir=report

執行後,無上述錯誤,同時會生成一個report檔案。其中會有一個json格式的報告:

當然json格式的報告不夠直觀,我們需要通過allure將它轉成HTML格式的報告。通過cmd命令cdreport的根目錄下,執行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))
 

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