python自動化測試之Pytest框架之YAML詳解以及Parametrize數據驅動!

一、YAML詳解

YAML是一種數據類型,它能夠和JSON數據相互轉化,它本身也是有很多數據類型可以滿足我們接口 的參數類型,擴展名可以是.yml或.yaml

作用:

1.全局配置文件
基礎路徑,數據庫信息,賬號信息,日志格式,報告名稱等。
2.編寫測試用例
接口自動化測試用例

語法結構:

1.區分大小寫 Name name
2.通過縮進來表示層級關系。使用空格。
3.可以使用#作為注釋
4.字符串一般默認可以不使用引號,必須時才使用。

數據類型:

基本類型:

整數
浮點數
字符串(當有特殊字符時:雙引號不會被轉義,其它的都會加一個轉義符\)
布爾值
null
日期時間

復雜類型:

對象(字典):鍵: (空格)
數組(列表):它是使用 一組橫線"-" 開頭。

數據類型強轉:【雞肋】

!!int
!!str

引用:

引用:&建立錨點(標記),*使用錨點,<<表示合并到當前數據。

二、YAML的讀寫和清空

安裝:
pip install pyyaml
讀寫和清空
#讀取 
def read_yaml(yaml_path): with open(yaml_path,encoding="utf-8",mode="r") as f: value = yaml.safe_load(f) return value #寫入 
def write_yaml(yaml_path,data): with open(yaml_path,encoding="utf-8",mode="w") as f: yaml.safe_dump(data, stream=f,allow_unicode=True) # #清空 
def clear_yaml(yaml_path): with open(yaml_path, encoding="utf-8", mode="w") as f: pass

三、pytest的parametrize結合yaml實現數據驅動

@pytest.mark.parametrize("參數名","參數值(可以是list或tuple)")

方法一:【不常用】

方法二:【常用】
class TestApi:@pytest.mark.parametrize("caseinfo", read_yaml("../testcases/test_api.yaml"))def test_login2(self,caseinfo):print("登錄測試用例:%s " % caseinfo)
-username: adminpassword: "001"
-username: admin2password: "002"
-username: admin3password: "003"
多個用例
-feature: 正例:接口所屬模塊story: 接口名稱title: 用例標題request:method: geturl: http://www.baidu.comheaders: 請求頭params: 請求參數validate: null-feature: 反例:接口所屬模塊story: 接口名稱title: 用例標題request:method: geturl: http://www.baidu.comheaders: 請求頭params: 請求參數validate: null

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

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

相關文章

CentOS 7操作系統部署KVM軟件和創建虛擬機

CentOS 7.9操作系統部署KVM軟件和配置指南&#xff0c;包括如何創建一個虛擬機。 步驟 1: 檢查硬件支持 首先&#xff0c;確認您的CPU支持虛擬化技術&#xff0c;并且已在BIOS中啟用&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo 如果輸出大于0&#xff0c;則表示支持虛擬…

日本 萬葉假名

萬葉假名&#xff08;まんようがな&#xff0c;Manyōgana&#xff09;是一種早期的日語書寫系統&#xff0c;主要用于《萬葉集》等古代文獻中。它的特點是完全使用漢字來表示日語的音&#xff0c;不考慮漢字的原意。可以將其視為平假名和片假名的前身。 記住是唐代的發音不是…

【鴻蒙HarmonyOS Next實戰開發】實現組件動態創建和卸載-優化性能

一、簡介 為了解決頁面和組件加載緩慢的問題&#xff0c;ArkUI框架引入了動態操作功能&#xff0c;支持組件的預創建&#xff0c;并允許應用在運行時根據實際需求動態加載和渲染組件。 這些動態操作包括動態創建組件&#xff08;即動態添加組件&#xff09;和動態卸載組件&am…

【未完待續】關于I-Cache的一些思考

前言 最近對計組重拾興趣&#xff0c;想到了一些問題&#xff0c;本來想著會不會存在一些漏洞的&#xff0c;但是查閱資料發現還是自己太年輕了&#xff0c;架構師們早就想到了這些問題。這里簡單記錄一些與 GPT 的對話。感興趣的同學可以自行思考或查閱資料學習 與 GPT 的對…

MongoDB 7 分片副本集升級方案詳解(上)

#作者&#xff1a;任少近 文章目錄 前言&#xff1a;Mongodb版本升級升級步驟環境1.1環境準備1.2standalone升級1.3分片、副本集升級 前言&#xff1a;Mongodb版本升級 在開始升級之前&#xff0c;請參閱 MongoDB下個版本中的兼容性變更文檔&#xff0c;以確保您的應用程序和…

AI前端開發:跨領域合作的新引擎

隨著人工智能技術的飛速發展&#xff0c;AI代碼生成器等工具的出現正深刻地改變著軟件開發的模式。 AI前端開發的興起&#xff0c;不僅提高了開發效率&#xff0c;更重要的是促進了跨領域合作&#xff0c;讓數據科學家、UI/UX設計師和前端工程師能夠更緊密地協同工作&#xff0…

前端開發所需參考文檔—重中之中

菜鳥教程&#xff1a;https://www.runoob.com/ W3C&#xff1a;https://www.w3school.com.cn/index.html MMDN&#xff1a;https://developer.mozilla.org/zh-CN/ Vue3&#xff1a;Vue.js - 漸進式 JavaScript 框架 | Vue.js 基本上所有的前端開發基礎都可以在其中找到參考…

DeepSeek 助力 Vue 開發:打造絲滑的返回頂部按鈕(Back to Top)

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

C++中接口與繼承的區別(自我學習用)

繼承&#xff08;Inheritance&#xff09;和 接口&#xff08;Interface&#xff09;是面向對象編程&#xff08;OOP&#xff09;中的兩種不同概念&#xff0c;雖然在 C 中沒有像 Java 那樣的 interface 關鍵字&#xff0c;但可以通過 純虛函數 來實現接口的概念。讓我們詳細比…

epoll的原理

Epoll是Linux系統中高效的I/O多路復用機制&#xff0c;廣泛應用于高并發服務器&#xff08;如Nginx、Redis&#xff09;。其核心原理在于事件驅動模型和高效數據結構設計&#xff0c;解決了傳統select/poll的性能瓶頸。以下從數據結構、工作流程、觸發模式等維度展開分析&#…

epoll_ctl的概念和使用案例

epoll_ctl 是 Linux 系統中 I/O 多路復用機制 epoll 的核心函數之一&#xff0c;用于管理 epoll 實例監控的文件描述符&#xff08;File Descriptor, FD&#xff09;。它負責向 epoll 實例注冊、修改或刪除需要監控的 FD 及其事件類型&#xff0c;是實現高性能網絡編程&#xf…

Java練習(20)

ps:練習來自力扣 給你一個 非空 整數數組 nums &#xff0c;除了某個元素只出現一次以外&#xff0c;其余每個元素均出現兩次。找出那個只出現了一次的元素。 你必須設計并實現線性時間復雜度的算法來解決此問題&#xff0c;且該算法只使用常量額外空間。 class Solution {pu…

Tetragon:一款基于eBPF的運行時環境安全監控工具

關于Tetragon Tetragon是一款基于eBPF的運行時環境安全監控工具&#xff0c;該工具可以幫助廣大研究人員檢測并應對安全重大事件&#xff0c;例如流程執行事件、系統調用活動、I/O活動&#xff08;包括網絡和文件訪問等&#xff09;。 在 Kubernetes 環境中使用時&#xff0c;…

1046. 最后一塊石頭的重量

文章目錄 1.題目[1046. 最后一塊石頭的重量](https://leetcode.cn/problems/last-stone-weight/description/)2.思路3.代碼 1.題目 1046. 最后一塊石頭的重量 有一堆石頭&#xff0c;每塊石頭的重量都是正整數。 每一回合&#xff0c;從中選出兩塊** 最重的** 石頭&#xff…

Qt多線程技術【線程池】:QRunnable 和 QThreadPool

在現代軟件開發中&#xff0c;尤其是在處理大量并發任務時&#xff0c;線程池技術是一種高效的解決方案。線程池不僅能提高程序的性能&#xff0c;還能有效管理線程的生命周期&#xff0c;避免頻繁的線程創建和銷毀所帶來的性能損失。本文將以Qt中的 QThreadPool 和 QRunnable …

DOM讓JavaScript可以對文檔中的標簽、屬性、內容等進行 訪增刪改 操作

示例 HTML 文檔 首先&#xff0c;我們有一個簡單的 HTML 文件 index.html&#xff0c;內容如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widt…

218.子結構判斷

class Solution {/*** 判斷樹 B 是否是樹 A 的子結構* param A 樹 A 的根節點* param B 樹 B 的根節點* return 如果 B 是 A 的子結構&#xff0c;返回 true&#xff1b;否則返回 false*/public boolean isSubStructure(TreeNode A, TreeNode B) {// 如果樹 B 為空&#xff0c;…

【DuodooBMS】基于Odoo的開源制造執行系統——以開源之力,驅動智能制造

以用戶為中心的開放式智造平臺 DuodooMES的設計始終圍繞“用戶可編程、生態可生長”的核心思想&#xff0c;打破傳統工業軟件的封閉性&#xff0c;讓制造企業真正成為系統的“主人”&#xff1a; 1. 用戶可編程&#xff1a;生產流程由你定義 界面可配置&#xff1a;無需代碼即…

Unity使用iTextSharp導出PDF-02基礎結構及設置中文字體

基礎結構 1.創建一個Document對象 2.使用PdfWriter創建PDF文檔 3.打開文檔 4.添加內容&#xff0c;調用文檔Add方法添加內容時&#xff0c;內容寫入到輸出流中 5.關閉文檔 using UnityEngine; using iTextSharp.text; using System.IO; using iTextSharp.text.pdf; using Sys…

Navicat導入海量Excel數據到數據庫(簡易介紹)

目錄 前言正文 前言 此處主要作為科普帖進行記錄 原先Java處理海量數據的導入時&#xff0c;由于接口超時&#xff0c;數據處理不過來&#xff0c;后續轉為Navicat Navicat 是一款功能強大的數據庫管理工具&#xff0c;支持多種數據庫系統&#xff08;如 MySQL、PostgreSQL、…