Pytest系列(23)- allure 打標記之 @allure.epic()、@allure.feature()、@allure.story() 的詳細使用


如果你還想從頭學起Pytest,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

前言

  • 前面幾篇文章主要介紹了allure的特性,這篇文章我們就來講下allure的標記用法
  • 有時候我們寫pytest的時候,會用到 @pytest.mark 但並不會顯示在allure報告上
  • 而allure也提供了三種類型的標記裝飾器,它們是可以顯示在allure報告上的

 

allure的標記裝飾器

  • BDD樣式的標記裝飾器
  • 優先級(嚴重程度)標記裝飾器
  • 自定義標記裝飾器

 

BDD標記裝飾器

提供了三個裝飾器

  • @allure.epic:敏捷里面的概念,定義史詩,往下是 feature
  • @allure.feature:功能點的描述,理解成模塊往下是 story
  • @allure.story:故事,往下是 title

 

栗子一(story+feature)

測試代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-19 14:27
__Author__ = 小菠蘿測試筆記
__Blog__   = https://www.cnblogs.com/poloyy/
"""

import allure


def test_without_any_annotations_that_wont_be_executed():
    pass


@allure.story('epic_1')
def test_with_epic_1():
    pass


@allure.story('story_1')
def test_with_story_1():
    pass


@allure.story('story_2')
def test_with_story_2():
    pass


@allure.feature('feature_2')
@allure.story('story_2')
def test_with_story_2_and_feature_2():
    pass

 

無標記裝飾器

我們先看看沒有設置標記裝飾器時,allure報告是咋樣的

 

 

添加裝飾器

加了 @allure.feature 和 @allure.story 之后的 allure 報告

 

知識點

  • story 是 feature 的子集,當測試用例有 @allure.feature、@allure.story 時,在報告上會先顯示 feature,點開之后再顯示 story【可以想象成,安徒生童話(feature)有很多個童話故事(story)】
  • 如果不加 @allure.feature、@allure.story 時,在Behaviors欄目下,測試用例都不會分類顯示,當用例多的時候可能看的花里胡哨

 

栗子二

前言

這里應用了包括前面所講的全部裝飾器

 

測試代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  = 
__Time__   = 2020/10/27 19:44
__Author__ = 小菠蘿測試筆記
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import os

import allure
import pytest


@pytest.fixture(scope="session")
def login_fixture():
    print("=== 前置登錄 ===")


@allure.step("步驟1")
def step_1():
    print("操作步驟---------------1")


@allure.step("步驟2")
def step_2():
    print("操作步驟---------------2")


@allure.step("步驟3")
def step_3():
    print("操作步驟---------------3")


@allure.epic("epic 相當於總體描述")
@allure.feature("測試模塊")
class TestAllureALL:

    @allure.testcase("https://www.cnblogs.com/poloyy/", '測試用例,點我一下')
    @allure.issue("https://www.cnblogs.com/poloyy/p/12219145.html", 'Bug 鏈接,點我一下')
    @allure.title("用例的標題")
    @allure.story("story one")
    @allure.severity("critical")
    def test_case_1(self, login_fixture):
        """
        小菠蘿測試筆記地址:https://www.cnblogs.com/poloyy/
        """
        print("測試用例1")
        step_1()
        step_2()

    @allure.story("story two")
    def test_case_2(self, login_fixture):
        print("測試用例2")
        step_1()
        step_3()


@allure.epic("另一個 epic")
@allure.feature("查找模塊")
class TestAllureALL2:
    @allure.story("story three")
    def test_case_3(self, login_fixture):
        print("測試用例3")
        step_1()

    @allure.story("story four")
    def test_case_4(self, login_fixture):
        print("測試用例4")
        step_3()


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './allure'])
    os.system('allure -c ./allure')
    os.system('allure serve ./allure-report')

 

allure 報告

 

總結

倘若是用 pytest+allure 寫項目,又想用 @pytest.mark.xxx 來給不同的用例添加標記的話,可以嘗試用 @allure.feature、@allure.story 替換,畢竟可以顯示在報告上

 

提出問題

用命令行方式運行時,可以指定運行某個story、feature、epic嗎?

 

自問自答

當然可以,跟 @pytest.mark.xxx 指定標簽運行的方式沒啥區別,添加下面的命令行參數就行

  • --allure-epics
  • --allure-features
  • --allure-stories

 

舉栗子

# 只運行 epic 名為 test 的測試用例
pytest --alluredir ./report/allure --allure-epics=test

# 只運行 feature 名為 模塊 的測試用例
pytest --alluredir ./report/allure --allure-features=模塊

# 只運行 story1、story2 的測試用例(也可以不用=號 空格就行了哦)
pytest tests.py --allure-stories story1,story2

# 指定 feature+story
pytest tests.py --allure-features feature2 --allure-stories story2

 


免責聲明!

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



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