【自動化基礎】allure描述用例詳細講解及實戰

三叔測試筆記發表於2022-03-19

前言

allure可以輸出非常精美的測試報告,也可以和pytest進行完美結合,不僅可以渲染頁面,還可以控制用例的執行。下面就對allure的使用進行一個詳細的介紹和總結。

需要準備的環境:

  • python
  • pytest
  • allure-pytest
  • allure工具

一、allure用例描述

使用方法 引數值 引數說明
@allure.epic() epic描述 敏捷裡面的概念,對用例或用例集進行描述分類
@allure.feature() 模組名稱 與epic類似,只是比epic級別低
@allure.story() 使用者故事 與epic類似,只是比feature級別低
@allure.title(用例的標題) 用例的標題 重新命名html報告的用例名稱
@allure.testcase() 測試用例的連結地址 與link類似
@allure.issue() 缺陷 與link類似
@allure.description() 用例描述 進行測試用例的描述
@allure.step() 操作步驟 進行測試用例的步驟
@allure.severity() 用例等級 blocker,critical,normal,minor,trivial
@allure.link() 連結 定義一個連結,在測試報告展現(推薦使用)
@allure.attachment() 附件 報告新增附件

二、allure實戰demo

# -*- coding:utf-8 -*-
"""
@File: allure_demo.py
@Author: 三叔測試筆記
@Time : 2022/3/18 8:34
@Description: allure使用介紹
"""
import pytest
import allure
from base.log import Logger
logger = Logger(logger_name='allure', level='error').get_logger()


@pytest.fixture(scope="session")  # 用例前置操作
def login_fixture():
    # 比如登入獲取token操作
    return "token:xx"


@allure.step("用例步驟1")
def step_1():
    logger.info("用例操作---------------步驟1")
    return True


@allure.step("用例步驟2")
def step_2():
    logger.info("用例操作---------------步驟2")
    return False


@allure.step("用例步驟3")
def step_3():
    logger.info("用例操作---------------步驟3")
    return True


@allure.epic("可以對用例或用例集進行描述分類(若出現多個時,內容一致則自動歸為一類)")
@allure.feature("對用例集或用例進行描述分類---與epic類似,只是比epic級別低")
@allure.story("對用例集或用例進行描述分類---與epic類似,只是比feature級別低")
class TestAllureDemo:

    @allure.testcase("https://xxx/testcase/list",
                     name='用例連結testcase')  # 為了更好的連結到問題分類或者bug、測試用例地址中(url、name兩個引數,可不填寫name;可以用@allure.link)
    @allure.link("https://xxx/testcase/list", name='用例連結link')  # 與testcase沒有多大區別,從可讀性角度還是建議選擇@allure.link
    @allure.issue("https://xxx/testcase/list", name='用例連結issue')  # 與testcase區別在於有小蟲子圖示
    @allure.title("用例的標題")  # 可引數化標題
    @allure.story("用例分類:1")  # 可引數化標題
    @allure.severity("critical")    # 用例等級(blocker critical normal minor trivial)
    def test_case_1(self, login_fixture):
        """
        1.用例描述
        2.用例步驟
        3.預期結果
        """
        logger.info(login_fixture)  # 獲取用例前置的資訊,比如登入token
        assert step_1()
        assert step_2()

    @allure.story("用例分類:2")
    def test_case_2(self, login_fixture):
        logger.info("測試用例2")
        assert step_1()
        assert step_3()


@allure.epic("冒煙自動化用例")
class TestDemo2:

    @allure.story("用例分類:3")
    def test_case_3(self, login_fixture):
        logger.info("測試用例3")
        step_1()

    @allure.story("用例分類:4")
    def test_case_4(self, login_fixture):
        logger.info("測試用例4")
        step_3()

三、allure的命令列引數

pytest執行用例時可以加上allure的標記引數,可以控制執行哪些用例。

--allure-severities=SEVERITIES_SET
                        Comma-separated list of severity names. Tests only
                        with these severities will be run. Possible values
                        are: blocker, critical, normal, minor, trivial.
--allure-epics=EPICS_SET
                        Comma-separated list of epic names. Run tests that
                        have at least one of the specified feature labels.
--allure-features=FEATURES_SET
                        Comma-separated list of feature names. Run tests that
                        have at least one of the specified feature labels.
--allure-stories=STORIES_SET
                        Comma-separated list of story names. Run tests that
                        have at least one of the specified story labels.
--allure-link-pattern=LINK_TYPE:LINK_PATTERN
                        Url pattern for link type. Allows short links in test,
                        like 'issue-1'. Text will be formatted to full url
                        with python str.format().

例項如下:

# 選擇執行你要執行epic的用例
pytest --alluredir ./report/allure --allure-epics=epic對大Story的一個描述性標籤

# 選擇執行你要執行features的用例
pytest --alluredir ./report/allure --allure-features=模組2

# 選擇執行你要執行features的用例
pytest --alluredir ./report/allure --allure-stories="使用者故事:1"

四、執行指令碼,allure生成報表,並啟動報告

執行方式一:

  1. 命令列模式下執行pytest,生產測試結果檔案
    pytest demo.py --alluredir ./report/allure

  2. allure程式啟動已經生產的檔案
    allure serve ./report/allure

執行方式二:

  1. 編寫啟動方法,執行pytest
pytest.main([allure_demo.py, "--alluredir", "report/result"])
  1. 使用程式,開啟allure服務
import subprocess

subprocess.call('allure generate report/result/ -o report/html --clean', shell=True)
subprocess.call('allure open -h 127.0.0.1 -p 9999 ./report/html', shell=True)

(兩種方法都需要安裝allure工具)

五、報告效果圖及註解

相關文章