09 接口自動化-用例管理框架pytest之allure報告定制以及數據驅動

文章目錄

      • 一、企業級的Allure報告的定制
        • 左邊的定制:
        • 右邊的定制:
          • 1.用例的嚴重程度/優先級
          • 2.用例描述
          • 3.測試用例連接的定制
          • 4.測試用例步驟的定制
          • 5.附件的定制
      • 二、企業中真實的定制有哪些?
      • 三、allure報告如何在本地訪問
      • 四、allure中的數據驅動裝飾器
        • 第一種用法
        • 第二種用法
        • 第三種用法
          • YAML的數據文件:
          • YAML數據驅動實現:

一、企業級的Allure報告的定制

左邊的定制:

1.史詩(項目名稱):@allure.epic(“項目名稱:接口自動化測試”)
2.特性(模塊名稱):@allure.feature(“模塊名稱:用戶模塊”)
3.分組(接口名稱):@allure.story(“接口名稱:查詢用戶”)
4.測試用例標題:

  • @allure.title(“測試用例標題:輸入正確的條件匹配成功”),適用于一個方法對
    應一個用例。
  • allure.dynamic.title(“測試用例標題:輸入正確的條件匹配成功”),適用于一個
    方法對應多個用例。也就是有數據驅動的情況。
import allure
import pytest@allure.epic("項目名稱:接口自動化測試")
@allure.feature("模塊名稱:用戶模塊")
class User:@allure.story("接口名稱:查詢用戶")@allure.title("測試用例標題:輸入正確的條件匹配成功")def test_user(self):# allure.dynamic.title("測試用例標題:輸入正確的條件匹配成功")print("test_user" )assert 'abc' in 'abcd'
右邊的定制:
1.用例的嚴重程度/優先級
  • blocker:中斷缺陷&致命bug:內存泄漏,用戶數據丟失,系統奔潰。
  • critical:臨界缺陷&嚴重bug:功能未實現,功能錯誤,重復提交
  • normal:一般缺陷&一般bug,條件查詢有誤,大數據了無響應等
  • minor:次要缺陷:提示bug,顏色搭配不好,字體排列不整齊,錯別字。
  • trivial:輕微缺陷:輕微bug,沒有使用專業術語,必填項無提示,建議。

@allure.severity(allure.severity_level.BLOCKER)
注意:這個裝飾器可以修飾方法也可以修飾類。

2.用例描述

和用例標題一樣,有兩種寫法:@allure.description("") allure.dynamic.description("")

import allure
import pytestclass TestUser:@allure.description("用戶測試用例描述")@pytest.mark.userdef test_get_userinfo(self):# allure.dynamic.description("用戶測試用例描述2")print("get_userinfo" )assert 'abc' in 'abcd'
3.測試用例連接的定制
  • 接口地址:
  • Bug地址:
  • 測試用例的地址:
import allure
import pytestclass TestUser:@allure.link(name="接口地址", url="https://api.weixin.qq.com/cgi‐bin/token")@allure.issue(name="Bug連接", url="https://www.zentao.net/")@allure.testcase(name="測試用例地址", url="https://www.zentao.net/")def test_get_userinfo(self):print("get_userinfo" )assert 'abc' in 'abcd'
4.測試用例步驟的定制

有兩種寫法:

  • @allure.step("") :不建議使用,不靈活,只能傳入一個title值,不能寫多個步驟
  • with allure.step(""):推薦使用,比較靈活
import allure
import pytestclass TestUser:# @allure.step("測試步驟")  不建議使用,不靈活,只能傳入一個title值,不能寫多個步驟@pytest.mark.userdef test_get_userinfo(self):# 增加測試步驟-建議使用for a in range(1, 5):with allure.step("測試用例步驟" + str(a) + ""):print("步驟" + str(a) + "執行的腳本")print("get_userinfo" )assert 'abc' in 'abcd'
5.附件的定制

body=附件內容, name=None文件名, attachment_type=None文件擴展名

  • web自動化
# web自動化
with open(r"./screenshots/logo.png", mode="rb") as f:allure.attach(body=f.read(), name="用戶測試錯誤截圖",attachment_type=allure.attachment_type.PNG)
  • 接口自動化
#接口自動化
allure.attach(body="https://api.weixin.qq.com/cgi‐bin/token", name="請求地址:",attachment_type=allure.attachment_type.TEXT)allure.attach(body="get", name="請求方式:", attachment_type=allure.attachment_type.TEXT)data = {"grant_type": "client_credential","appid": "wx6b11b3efd1cdc290","secret": "106a9c6157c4db5f6029918738f9529d"}allure.attach(body=json.dumps(data), name="請求數據:", attachment_type=allure.attachment_type.TEXT)rep = requests.get(url="https://api.weixin.qq.com/cgi‐bin/token", params=data)allure.attach(body=str(rep.status_code)+rep.text, name="響應數據:", attachment_type=allure.attachment_type.TEXT)

二、企業中真實的定制有哪些?

  • 1.@allure.epic(“項目名稱”)
  • 2.@allure.feature(“模塊名稱”)
  • 3.@allure.story(“接口名稱”)
  • 4.@allure.severity(allure.severity_level.BLOCKER) 嚴重程度
  • 5.allure.dynamic.title(“用例名稱:測試用例名稱”)
  • 6.allure.dynamic.description(“用例描述:測試用例描述”)
  • 7.with allure.step(“測試步驟的名稱”)
  • 8.allure.attach(body, name, attachment_type, extension) 測試用例附件

7與8一般會進行封裝,后期講解

三、allure報告如何在本地訪問

因為pycharm自帶容器:tomcat,Nginx,weblogic。有以下兩種方式實現本地訪問

  • 1.在本地搭建本地服務器。
  • 2.通過啟動服務打開allure報告。(簡單)
    allure open [報告路徑]

四、allure中的數據驅動裝飾器

@pytest.mark.parametrize(參數名,數據(list,tuple,字典列表,字典元祖))

第一種用法
@allure.story("接口名稱:測試數據驅動")
@pytest.mark.parametrize("args_name",["無憂渡","藏海傳","折腰"])
@pytest.mark.user
def test_get_data(self,args_name):print(args_name)
第二種用法
@allure.story("接口名稱:測試數據驅動")
@pytest.mark.parametrize("order,name",[["01","《無憂渡》"],["04","《藏海傳》"],["03","《折腰》"]])
@pytest.mark.user
def test_get_data(self,order,name):print("序號:"+order+"劇名:"+name)
第三種用法

使用yaml 數據進行數據驅動
YAML有兩種數據:

  • -開頭的代碼list
  • 鍵值對:key:value
YAML的數據文件:
 -name: get correct user tokendescription: When trying to obtain a user token with a valid appid, correct secret, and correct grant_type, the request will succeed.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa309secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an empty appid, correct secret, and correct grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid:secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an correct appid, error secret, and correct grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa308secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an correct appid, correct secret, and empty grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa308secret: e40a02f9d79a8097df497e6aaf93ab81grant_type:validate: None
YAML數據驅動實現:

注:記得安裝 PyYAML

# -*- coding: utf-8 -*-
import json
import allure
import pytest
import requests
import yaml# 讀取 yaml 文件
def read_yaml(path):with open(path,mode="r",encoding="utf-8") as f:value = yaml.load(f,Loader=yaml.FullLoader)return value@allure.epic("項目名稱:接口自動化測試")
@allure.feature("模塊名稱:用戶模塊")
class TestUser:@allure.story("接口名稱:獲取用戶token")@allure.severity(allure.severity_level.BLOCKER)@pytest.mark.user@pytest.mark.parametrize("case_info",read_yaml("./testcases/user_manage/get_token.yml"))def test_get_user_token(self,case_info):print(case_info)allure.dynamic.title(case_info['name'])allure.dynamic.description(case_info['description'])allure.attach(body=case_info['request']['url'],name="請求地址:",attachment_type=allure.attachment_type.TEXT)allure.attach(body=case_info['request']["method"],name="請求方式:",attachment_type=allure.attachment_type.TEXT)data = case_info['request']["data"]allure.attach(body=json.dumps(data),name="請求數據:",attachment_type=allure.attachment_type.TEXT)rep = requests.get(url=case_info['request']['url'],params=data)allure.attach(body=str(rep.status_code) + rep.text,name="響應數據:",attachment_type=allure.attachment_type.TEXT)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82304.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DDoS防護實戰——從基礎配置到高防IP部署

一、基礎防護:服務器與網絡層加固 Linux內核優化: 調整TCP協議棧參數,緩解SYN Flood攻擊: # 啟用SYN Cookie并減少超時時間 echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout…

華為云Flexus+DeepSeek征文|Flexus云服務器Dify-LLM資源部署極致體驗Agent

前引:重磅來襲!本次以DeepSeek-V3/R1商用大模型和Dify-LLM應用平臺一鍵部署為核心,專為新手打造“開箱即用”的AI開發體驗。無論你是想快速搭建企業級AI應用,還是探索大模型落地的無限可能,只需跟隨小編實現三步走&…

SQLAlchemy 2.0 查詢使用指南

SQLAlchemy 2.0 查詢使用指南 1. 環境設置 首先,需要安裝 SQLAlchemy 2.0 版本。假設你使用的是 SQLite 數據庫,可以通過以下命令安裝 SQLAlchemy: pip install sqlalchemy接著,我們創建數據庫連接并初始化會話: f…

Windows 使用 WSL 安裝 Ubuntu

一,前言 Windows 上輕松跑 Linux 又不想用笨重的VMware 和VirtualBox ,怎么辦? 開源項目 Windows Subsystem for Linux (WSL)。它解決了許多開發者在 Windows 和 Linux 間切換的痛點,實現在 Windows 上無縫跑 Linux 工具和命令。…

[Excel VBA]如何製作買三送一優惠條件的POS結帳介面?

Excel I VBA I 買三送一優惠條件的POS結帳機 因應商品特賣活動,結帳介面需整合特定優惠條件,如買三送一,買五送二等等優惠條件。本文封面影片以買三送一為範例,並搭配VBA和對應按鈕,而實現銷售訂單紀錄和即時更新庫存等…

3d世界坐標系轉屏幕坐標系

世界坐標 ——> NDC標準設備坐標 ——> 屏幕坐標 標準設備NDC坐標系 屏幕坐標系 .project方法將 將向量(坐標)從世界空間投影到相機的標準化設備坐標 (NDC) 空間。 手動實現HTML元素定位到模型位置,實現模型標簽效果(和css2Render原理同理&#…

Idea出現 100% classes 等

總是誤點出來,每次又忘了怎么消除,在這里記錄一下。 出現這樣: 操作idea界面的:點擊View->Tool Windows ->Coverage,然后關掉

從零開始學習QT——第一步

一、Qt 1.1、Qt是什么 Qt是一個跨平臺的C圖形用戶界面應用程序框架。它為應用程序開發者提供建立圖形界面所需的所有功能。它是完全面向對象的,很容易擴展,并且允許真正的組件編程。 1.2、Qt的發展歷程 1991年 Qt最早由芬蘭奇趣科技開發 1996年 進入商業…

MySQL 8.0 OCP 1Z0-908 171-180題

Q171.Examine this MySQL client command to connect to a remote database: mysql-h remote-example.org-u root–protocolTCP–ssl-mode Which two–ss1-mode values will ensure that an X.509-compliant certificate will be used to establish the SSL/TLS connection to …

【機器學習】 關于外插修正隨機梯度方法的數值實驗

1. 隨機梯度下降(SGD) 迭代格式: x k 1 x k ? η k ? f i ( x k ) x_{k1} x_k - \eta_k \nabla f_i(x_k) xk1?xk??ηk??fi?(xk?) 其中, η k \eta_k ηk? 為步長(可能遞減), ? f…

每日c/c++題 備戰藍橋杯(洛谷P3382 三分法求極值詳解)

洛谷P3382 三分法求極值詳解 題目描述 P3382 三分法 要求在給定區間內尋找一個多項式函數的最大值點。題目保證函數在區間內先嚴格遞增后嚴格遞減(單峰函數),適合使用三分法求解。 算法原理 三分法核心思想 對于單峰函數,在區…

[Windows] 一鍵實現重復工作自動化zTasker

zTasker,是一款定時|熱鍵|純粹的自動化任務神器。它支持超過100種任務類型,包括提醒、關機重啟、報時、擋屏休息、文件備份、音量調節、靜音等。用戶可以通過定時、CPU占用、文件夾監控、網速、快捷鍵等多種條件觸發任務。 簡單點…

Docker核心筆記

一、概述 1、架構 Docker容器基于鏡像運行,容器共享宿主機的內核,不會加載額外內核,通過Namespaces(環境隔離)和Cgroups(資源控制)實現隔離,Cgroups會限容器使用資源并控制優先級和統計數據。隔離后的容器僅包含應用所需的用戶態依賴 2、安裝 安裝先卸載再安裝,使用的yum…

2025年電工杯數學建模B題【垃圾運輸】原創論文分享

大家好呀,從發布賽題一直到現在,總算完成了2025年電工杯數學建模B題【垃圾運輸】完整的成品論文。 給大家看一下目錄吧: 目錄 摘 要: 一、問題重述 二.問題分析 2.1問題一 2.2問題二 2.3問題三 三、模型假設 …

[爬蟲知識] IP代理

相關實戰案例:[爬蟲實戰] 代理爬取:小白也能看懂怎么用代理 相關爬蟲專欄:JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 引言:爬蟲與IP封鎖的攻防戰 對網絡爬蟲而言,遇到的一個較棘手的問題就是封IP:請…

計算機視覺---YOLOv1

YOLOv1深度解析:單階段目標檢測的開山之作 一、YOLOv1概述 提出背景: 2016年由Joseph Redmon等人提出,全稱"You Only Look Once",首次將目標檢測視為回歸問題,開創單階段(One-Stage&#xff09…

前端學習筆記element-Plus

【element-plus菜單】參數說明: active-text-color"#ffd04b"——激活顏色 background-color"#232323"——背景顏色(29,160,176) :default-active"$route.path"——配置默認高亮的菜單項 text-color"#f…

【Django DRF】一篇文章總結Django DRF框架

第一章 DRF框架基礎 1.1 DRF簡介 1.1.1 DRF定義與作用 1. 定義 DRF 即 Django REST framework,它是一個建立在 Django 基礎之上的強大且靈活的工具包,用于構建 Web API(應用程序編程接口)😎。簡單來說,…

如何解決 Python 項目安裝依賴報錯:ERROR: Failed to build installable wheels for some pyproject.toml based project

如何解決 Python 項目安裝依賴報錯:ERROR: Failed to build installable wheels for some pyproject.toml based projects 在使用 pip 安裝 Python 項目的依賴時,遇到類似如下的報錯信息: ERROR: Failed to build installable wheels for s…

使用f5-tts訓練自己的模型筆記

摘要 服務器都有了,這不得練練丹,有點說不過去啊。所以嘗試了從頭開始訓練一個模型,結果由于推理頁面好像有bug,不知道是不是失敗了,然后又嘗試微調一下模型。本篇文章主要記錄了三流調包俠嘗試煉丹過程中學習到的一些…