【pytest-allure】生成漂亮的自動化測試報告


測試報告 pytest-allure插件

什么是allure

  • 是一個輕量級、靈活的、支持多語言的測試報告工具
  • 多平太、奢華的report框架
  • 可以為dev/qa提供詳盡的測試報告、測試步驟、log
  • 為管理層提供high level統計報告
  • java語言開發的、支持pytest、javascript、php、ruby
  • 可以集成到jenkins

下載安裝

下載地址

官方文檔

windows安裝
  • jdk1.8+
  • 解壓到allure-commandline目錄
  • 進入到bin目錄,運行allure.bat
  • 添加環境變量
# 添加到PATH
# 添加完后可能需要重啟pycharm或者電腦,可以使用echo %path% 打印環境變量
\安裝路徑\allure-commandline\bin

  • cmd下驗證安裝
allure --version
  • 安裝擴展包
pip install allure-pytest

生成測試報告

指定測試報告目錄

  • 在測試執行期間收集結果
pytest [測試文件/目錄] -s -q --alluredir=./result/(--alluredir這個選項用於指定測試結果的路徑)
# --alluredir=指定測試數據目錄和運行結果
# test.py為測試用例文件(可以不加,也可以放測試用例目錄)
pytest test.py --alluredir=../result/report/1
或者
# 想要打印出測試用例詳細、PASSED以及進度條加-v
pytest -v test.py --alluredir=../result/report/1

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OQbKEgTW-1608733557517)(測試報告 pytest-allure插件.assets/image-20200712024115324.png)]

  • 查看測試報告

    • 方式一:測試完成后,查看實際報告,在線看報告,會直接打開默認瀏覽器展示
    # 指定測試報告目錄
    # 將測試數據轉化測試報告
    allure serve ../result/report/1 
    
    • 方式二:從結果生成報告,這是一種啟動tomcat的服務,需要兩個步驟:生成報告,打開報告

      • 生成報告
      allure test.py serve ../result/report/1 
      # 注意:覆蓋路徑加--clean(清空已有的報告,避免覆蓋時出錯)
      allure generate ../result/report/1 -o ../result/report/1 --clean
      # 執行后生成以下文件夾和文件
      

      [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-T8WhSjSa-1608733557520)(測試報告 pytest-allure插件.assets/image-20200712023117939.png)]

      • 打開報告
      allure open -h 127.0.0.1 -p 8883 ../result/report/1
      

每次用例執行之前先清空allure的報告記錄

pytest -v test_calc.py --alluredir=../report/1
pytest test_calc.py --alluredir=./report/1 --clean-alluredir
allure serve ../report/1

allure裝飾器

@allure.feature() 標注模塊名稱/添加標識(功能點描述)

@allure.story() 標注feature功能模塊下的分支功能/用戶故事

@allure.step() 標注操作步驟

用法
  • @allure.step() 只能以裝飾器的形式放在類或者方法上面
  • with allure.step(): 可以放在測試用例方法里面,但測試步驟的代碼需要被該語句包含,如下代碼
@allure.story("密碼缺失")
def test_login_failure(self):
    with allure.step("點擊用戶名"):
    	print("輸入用戶名")
    with allure.step("點擊密碼"):
    	print("輸入密碼")
    print("點擊登錄")
    with allure.step("點擊登錄之后登錄失敗"):
        asser '1' == 1
        print("登錄失敗")
    pass
        

@allure.issue() 對應bug管理系統里面的鏈接/關聯bug

@allure.link("http://www.baidu.com")
def test_with_link():
    print("這是一條加了鏈接的測試用例")
    pass

# 效果如圖2
# 可以使用此種方式鏈接到測試用例管理系統上,測試用例名使用name參數,比如:name="登錄用例"
@allure.link("http://www.baidu.com",name="鏈接")
def test_with_link():
    print("這是一條加了鏈接的測試用例")
    pass

# 使用此種方式鏈接到bug管理系統上,140為bug_id,后面一串是bug的說明/描述
# 地址需要在執行命令的時候給
# --allure-link-pattern=issue:http://www.mytesttracker.com/issue/{}
# 完整命令如下
# pytest test.py ----allure-link-pattern=issue:http//www.mytesttracker.com/issue/{} --alluredir=../result/report/1
@allure.issue('140','Pytest-flaky test retries shows like test steps')
def test_with_issue_link():
    pass

TEST_CASE_LINK='https://github.com/qameta/allure-integrations/issues/8#'
@allure.issue(TEST_CASE_LINK,'Test case title')
def test_with_testcase_link():
    pass


圖2

在這里插入圖片描述

@allure.attach() 添加圖片、文本信息、html

  • 場景

    • 前端自動化測試經常需要附加圖片、文本信息、附件、視頻、代碼塊或者html,在適當的地方、適當的時機截圖
  • 解決

    • @allure.attach 顯示許多不同類型的提供的福建、可以補充測試、步驟或測試結果
  • 步驟

    • 在測試報告里附加網頁
    # allure.attach(body(內容),name,attachment_type,extension):
    # allure.attach('<head></head><body>首頁</body>','這是錯誤也的結果信息',allure.attachment_type.HTML)
    
    • 在測試報告里附加圖片
    # allure.attach.file(source,name,attachment_type,extension):
    # allure.attach.file("./result/b.png",attachment_type=allure.attachment_type.PNG)
    
  • 舉個例子

    • 代碼

      • 添加文本信息
      import allure
      def test_attach_text():
          allure.attach("這是一個文本",attachment_type=allure.attachment_type.TEXT)
          
      # 執行運行
      # pytest -v test_calc.py --alluredir=../report/1
      # allure serve ../report/1
      

在這里插入圖片描述

+ 添加html代碼塊

  ```python
  import allure
  def test_attach_html():
      allure.attach("<body>這是一段html body塊</body>","html測試塊",attachment_type=allure.attachment_type.HTML)
  ```

+ 添加圖片

  ```python
  # 錯誤演示,使用文件時需要到allure.attach.file方法
  import allure
  def test_attach_photo):
      allure.attach("../report/photo/a.jpg",name="這是圖片",attachment_type=allure.attachment_type.JPG)
  ```

+ 執行以下命令

  ```python
  pytest -v test_calc.py --alluredir=../report/1
  allure serve ../report/1
  ```

  注意:此時圖片展示不出來的時候

在這里插入圖片描述

  + 解決圖片展示不出來的問題,可以去查看attach源碼

在這里插入圖片描述

    使用文件的時候需要用到file方法

    ```python
    # 正確用法
    import allure
    def test_attach_photo):
        allure.attach.file("../report/photo/a.jpg",name="這是圖片",attachment_type=allure.attachment_type.JPG)
    
    # 執行命令
    pytest -v test_calc.py --alluredir=../report/1
    allure serve ../report/1
    
    ```

     

    效果如圖

在這里插入圖片描述

allure特性

@allure.feature與@allure.story的關系

  • feature相當一個功能,一個大的模塊,將case分類到某個feature中,報告中behaviore中顯示,相當於testsuite
  • story相當於對應這個功能或者模塊下的不同場景,分支功能,屬於feature之下的結構,報告在features中顯示,相當於testcase
  • feature與story類似於父子關系

@allure.epic與@allure.feature的關系

  • epic與feature類似父子關系

@allure.story與@allure.title的關系

  • story與title類似父子關系

@allure.step

  • 測試過程中每個步驟,一般放在具體邏輯方法中
  • 可以放在關鍵步驟中,在報告中顯示
  • 在app,web自動化測試當中,建議沒切換到一個新的頁面當做一個step

@allure.issue

  • 關聯bug

    • 執行的時候需要加個參數
    --allure-link-pattern=issue:http//www.mytesttracker.com/issue/{}
    # 完整命令如下
    pytest test.py ----allure-link-pattern=issue:http//www.mytesttracker.com/issue/{} --alluredir=../result/report/1
    

@allure.testcase

  • 關聯測試用例(可以直接給測試用例的地址鏈接)

@allure.epic() epic描述(敏捷里面的概念、定義史詩,往下是feature)

@allure.epic('測試API接口'.center(30,'*'))
class TestHttpbin:
    """測試模塊httpbin"""
    def test(self):
        """所有用例執行前的條件"""
        print("測試用例")
# 執行參數加上
--allure-epics=EPICS_SET
                        Comma-separated list of epic names. Run tests that
                        have at least one of the specified feature labels.
pytest --alluredir=../result/report/1 --allure-epics=epic對大Story的一個描述性標簽

@allure.suite() 測試套件/測試(集)套件,不用報告默認顯示py文件名

allure.tag() 測試用例標記 (用於給用例打個標記)

allure.title("用例標題") 測試用例的標題(重命名html報告名稱)

@alluredescription() 用例描述

運行

只運行一個模塊(添加)

@allure.feature("登錄模塊")
class TestLogin():
    @allure.story("登錄成功")
    def test_login_success(self):
        print("登錄測試用例:登錄成功")
        pass
    
    @allure.story("用戶名缺失")
    def test_login_failure(self):
        print("登錄測試用例:登錄成功")
    	pass

執行命令

pytest test.py --allure-features '登錄模塊'

按重要性級別進行一定范圍測試

  • 場景

    • 通常測試有P0、冒煙測試、驗證上線測試。按重要性界別來分別執行的,比如上線要吧主流程和重要模塊都跑一遍
  • 解決

    • 通過附加pytest.mark標記
    • 通過allure.feature或者allure.story
    • 也可以通過 allure.severity 來附加標記
      • 級別:Trivial:不重要,Minor:不太重要,Normal:正常問題,Critical:嚴重,Blocker:阻塞
  • 步驟

    • 在方法、函數和類上面加

      @allure.severity(allure.severity_level.TRIVIAL)
      
    • 執行時

      pytest -s -v 文件名 --allure-severities normal,critical

    Blocker級別:中斷bug(客戶端程序沒有響應,無法執行下一步操作)
    Critical級別:臨界bug(功能點缺失)
    Normal級別:普通bug(數值計算錯誤)
    Minor級別:次要bug(界面錯誤與UI需求不符)
    Trivial級別:輕微bug(必輸項沒有提示,或者提示不規范,建議性等)
    
  • 舉個例子

    • 代碼如下
    @allure.severity(allure.severity_level.TRIVIAL)
    def test_with_trivial_severity():
        pass
    
    @allure.severity(allure.severity_level.NORMAL)
    def test_with_normal_severity():
        pass
    
    @allure.severity(allure.severity_level.NORMAL)
    class TestClassWithNormalSeverity(object):
        def test_inside_the_normal_severity_test_class(self):
            pass
        @allure.severity(allure.severity_level.CRITICAL)
        def test_inside_the_normal_severity_test_class_with_overriding_critical_severity(self):
           pass
    
    • 在命令行執行
    # 多個級別用逗號隔開
    pytest test.py --alluredir=../result/report/1 --allure-severities normal,critical
    
    • 在pycharm右鍵使用run運行,需要配置Additional Arguments

在這里插入圖片描述

多並發運行

多並發運行

安裝補充

使用庫:pytest4.0,pytest-allure-adaptor

注意不要安裝allure-pytest該庫,否則會出現option names {'alluredir'} already added錯誤

1,安裝PowerShell (win10自帶有,其他系統自行安裝)

2,打開PowerShell,輸入命令:

set-executionpolicy remotesigned -s cu
再輸入

iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
輸入scoop help 可查看scoop命令列表

3,在PowerShell命令窗口輸入 scoop install allure
4,進入存放用例py文件的目錄下,執行

 py.test --alluredir=reports
 存放用例的目錄中會多一個reports文件夾,里面是各種txt和json文件
 再執行

allure generate reports

存放用例的目錄中會多一個allure-reports文件夾,更新allure-reports文件夾內容使用


allure generate reports --clean 

參考博客

[天蠍座的測試之旅]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM