pytest的fixture梳理

fixture特性

夾具是在測試中用于提供共享資源、設置測試環境或模擬行為的工具。

1. 可以重復使用,多個用例可以使用同一個fixture

2. 一個測試用例可以使用多個裝置

import pytest
# Arrange
@pytest.fixture
def first_entry():return "a"# Arrange
@pytest.fixture
def second_entry():return 2# Arrange
@pytest.fixture
def order(first_entry, second_entry):return [first_entry, second_entry]

2.1 如果多個裝置存在yield,則是先進后出

import pytest@pytest.fixture
def a():print("hello")yieldprint("this is a")@pytest.fixture
def b():print("world")yieldprint("this is b")def test_demo(a, b):print("this is test_demo")if __name__ == '__main__':pytest.main(["-sv", "test1.py"])

在這里插入圖片描述

3. fixture的返回值不需要接收

  • 如果一個fixture存在返回值,那么可以通過函數名直接使用其返回值,如下所示:
import pytest
@pytest.fixture
def first_entry():return "a"def test_a(first_entry):print(first_entry)if __name__ == '__main__':pytest.main(["-sv","test1.py"])

在這里插入圖片描述

4. fixfure多重嵌套

  • 如下append_firsttest_string_only并且此fixture緩存即order,根據gpt即我的測試
    如果一個 fixture 被請求了多次,但它的作用范圍是函數級別(默認),那么這個 fixture 在每次請求時都會重新執行一次,而不會緩存。這會導致每次請求獲得的數據都是獨立的,不受前一次請求的影響。

所以一般不要使用緩存,保證起獨立性

import pytest# Arrange
@pytest.fixture
def first_entry():return "a"# Arrange
@pytest.fixture
def order():return []# Act
@pytest.fixture
def append_first(order, first_entry):order.append(first_entry)return orderdef test_string_only(append_first, order, first_entry):# Assertprint(append_first) # ['a']print(order) ['a']assert order == [first_entry]pytest.main(["-sv", "test1.py"])

5自動使用fixture,不需要請求

  • 設置和清理環境、全局配置,例如數據庫連接、日志設置等可以使用,筆者用的不多
import pytest@pytest.fixture
def first_entry():return "a"@pytest.fixture(autouse=True)
def order():return "hello world"def test_a(order):print(order)pytest.main(["-sv", "test1.py"])

6 動態定義fixture范圍

7 安全拆卸的fixture

8fixture的request

9 fixture的參數化

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

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

相關文章

全新 – Amazon EC2 M1 Mac 實例

去年,在 re: Invent 2021 大會期間,我寫了一篇博客文章,宣布推出 EC2 M1 Mac 實例的預覽版。我知道你們當中許多人請求訪問預覽版,我們盡了最大努力,卻無法讓所有人滿意。不過,大家現在已經無需等待了。我很…

postmarketOS

主步驟 #以下全程插入usb線 fastboot devices fastboot getvar all fastboot erase userdata fastboot erase system fastboot erase cachepmbootstrap init pmbootstrap installpmbootstrap flasher flash_rootfs --partition userdata pmbootstrap flasher flash_kernel…

java生成Excel表格

public HSSFWorkbook CreateJZZJSList() {// 繪制ExcelString fileName "自動分析詳情";HSSFWorkbook wb new HSSFWorkbook();//創建工作相簿對象HSSFSheet sheet wb.createSheet(fileName); // --->創建了一個工作簿sheet.setDefaultRowHeight((short) 600);…

前端開發工具及環境配置

1.前端開發環境node npm環境配置 第一步:打開Download | Node.js (nodejs.org)下載,解壓。 找到下載壓縮包進行解壓 解壓到D盤目錄下: 第二步:配置環境變量:右擊此電腦點擊屬性進入高級系統設置 點擊高級系統設置進入…

項目管理系統是什么?能干什么?有什么功能?一文看懂

閱讀本文您可以了解:1、項目任務管理系統是什么;2、項目任務管理系統的作用;3、項目任務管理系統的功能 一、什么是項目任務管理 項目任務管理是指運用系統的理論方法,在有限的條件和資源下,對項目從開始到結束的全流…

Github下載任意版本的VsCode

下載歷史版本VsCode(zip) 下載鏈接由三部分組成: 固定部分commit idVSCode-win32-x64-版本號.zip 固定部分: https://vscode.cdn.azure.cn/stable/ Commit id: 打開 vscode的GitHub:[https://github.com/microsoft/vscode/r…

(搜索) 劍指 Offer 13. 機器人的運動范圍 ——【Leetcode每日一題】

?劍指 Offer 13. 機器人的運動范圍 難度:中等 地上有一個 m 行 n 列的方格,從坐標 [0,0] 到坐標 [m-1,n-1] 。一個機器人從坐標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外)&…

shell腳本基礎

目錄 前言 一、概述 (一)、shell腳本基礎概念 (二)、shell的類型 二、Shell變量 (一)、組成 1.變量名 2.變量值 (二)、類型 1.系統內置變量(環境變量) 2.自定…

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI轉DP EDP方案設計

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI轉DP EDP方案設計 LT8911EXB是MIPI DSI/CSI 轉eDP轉換芯片,ASL CS5523不需要改電路就可以直接PIN TO PIN替代與兼容LT8911EXB。 ASL CS5523與 LT8911EXB的功能與參數,用途方式以及封裝方式和…

【題解】旋轉數組的最小數字、比較版本號

文章目錄 旋轉數組的最小數字比較版本號 旋轉數組的最小數字 題目鏈接&#xff1a;旋轉數組的最小數字 解題思路1&#xff1a;遍歷求最小值 代碼如下&#xff1a; int minNumberInRotateArray(vector<int> rotateArray) {int min rotateArray[0];for(auto const&…

迪米特法則

迪米特法則&#xff0c;也稱為最少知識原則&#xff08;Law of Demeter&#xff09;&#xff0c;是面向對象設計中的一個原則&#xff0c;旨在降低對象之間的耦合性&#xff0c;提高系統的可維護性和可擴展性。該原則強調一個類不應該直接與其它不相關的類相互交互&#xff0c;…

Android 控件截圖保存本地并分享

目錄 需求 需求分析 一、截圖控件生成圖片 二、將圖片保存至本地 2.1 權限 2.2 保存圖片 2.3 調用 三、分享 四、通過測試機型 需求 截圖當前頁面某個控件的內容&#xff0c;并且保存在本地&#xff0c;可分享。 需求分析 1.截圖控件生成圖片 2.保存至本地(需考慮版…

【SpringCloud】Ribbon定制化配置

文章目錄 使用Ribbon自帶負載均衡算法添加負載均衡算法ConfigurationRestTemplate使用上面負載均衡算法 自定義負載均衡算法負載均衡算法實現RestTemplate在Controller中使用該負載均衡算法ServiceIInstance解釋 使用Ribbon自帶負載均衡算法 添加負載均衡算法Configuration /…

實現矩陣地圖與rviz地圖重合

文章目錄 一、rviz地圖轉換矩形地圖(只能用于全局規劃)二、在rviz上顯示地圖邊界信息,可視化調整,實現重合(只能用于局部規劃)一、rviz地圖轉換矩形地圖(只能用于全局規劃) 此方法矩形地圖可能會與rviz地圖不重合,通過改變偏移量x_offset,y_offset接近地圖 可以將矩…

FL Studio for Windows-21.1.0.3713中文直裝版功能介紹及系統配置要求

FL Studio 21簡稱FL水果軟件,全稱是&#xff1a;Fruity Loops Studio編曲&#xff0c;由于其Logo長的比較像一款水果因此&#xff0c;在大家更多的是喜歡稱他為水果蘿卜&#xff0c;FL studio21是目前最新的版本&#xff0c;這是一款可以讓你的計算機就像是一個全功能的錄音室&…

Docker Dockerfile Docker-compose學習筆記

文章目錄 Centos環境下安裝Docker配置鏡像源 Windows環境下安裝Docker配置鏡像源 使用Dokcer鏡像1.獲取鏡像2.查看鏡像信息(1)列出鏡像(2)鏡像標簽(3)鏡像詳細信息(4)鏡像歷史 3.搜索鏡像4.刪除和清理鏡像(1)使用標簽刪除鏡像(2)使用ID刪除鏡像(3)清理鏡像 5.創建鏡像(1)基于已…

基于SpringBoot和Freemarker的頁面靜態化

頁面靜態化能夠緩輕數據庫的壓力&#xff0c;還能提高頁面的并發能力&#xff0c;但是網頁靜態化是比較適合大規模且相對變化不太頻繁的數據。 頁面靜態化在實際應用中還是比較常見的&#xff0c;比如博客詳情頁、新聞網站或者文章類網站等等。這類數據變化不頻繁比較適合靜態…

56.linux 進程管理命令和用戶管理命令

目錄 一、進程管理命令 1.ps 2.pstree 3.kill 4.pkill 5.&后臺運行程序 6.jobs 7.fg bg 8.top 二、用戶管理命令 1.系統存儲用戶信息的文件 2.添加新用戶 3.修改用戶密碼 4.刪除用戶 一、進程管理命令 1.ps 用于查看當前系統中運行的進程信息。它可以…

Golang 程序性能優化利器 PGO 詳解(一):簡單介紹及使用

在軟件開發過程中&#xff0c;性能優化是不可或缺的一部分。無論是在Web服務、數據處理系統還是實時通信中&#xff0c;良好的性能都是至關重要的。Golang 從1.20版版本開始引入的 Profile Guided Optimization&#xff08;PGO&#xff09;機制能夠幫助更好地優化 Go 程序的性能…

The Age of Data and AI: Challenges and Opportunities

Simply put Abstract: This paper examines the impact of the “Age of Data” on the field of artificial intelligence (AI). With the proliferation of digital technologies and advancements in data collection, storage, and processing, organizations now have ac…