2、pytest核心功能(進階用法)

目錄

1、標記(Markers):

自定義插件

內置標記

2、夾具(Fixtures):

夾具得用法

夾具作用域

3、鉤子(hook):


這篇是最重要的 測試文件中需要用到的 總的來說 有以下幾個點 mark、fixture、hook、參數化、各種插件

1、標記(Markers):

  • 自定義插件

自定義標記得用途是篩選用例,只執行部分用例,共分為三個步驟

  1. 在pytest.init注冊標記
    ?
    [pytest]addopts = -vs   # addopts 用于指定默認的命令行選項markers =login: 登錄相關db: 數據庫相關upload: 上傳相關
  2. 在用例中通過裝飾器添加標記
    ?
    @pytest.mark.db
    def test_example():print('使用數據庫')
  3. 在命令行參數中加-m使用標記
    ?
    [pytest]addopts = -vs -m 'db or login'# -v(verbose 模式)用于顯示詳細的測試執行信息(包括每個測試用例的名稱和狀態)
    # -s(關閉輸出捕獲)允許測試中的 print 或日志輸出直接顯示在控制臺(默認情況下 pytest 會捕獲這些輸出)。
    # -m(標記篩選)只運行被標記為 @pytest.mark.db 或 @pytest.mark.login 的測試用例。
  • 內置標記

內置標記由pytest注冊的,目的不是為了篩選用例,而是對用例進行特殊處理,這種方法不需要注冊可以直接使用

  • @pytest.mark.skip? ? ?> 無條件跳過用例
  • @pytest.mark.skipif? ?> 有條件跳過用例
  • @pytest.mark.xfail? ? ?> 預期失敗
    ?
    @pytest.mark.skip(reason="Not implemented yet")
    def test_skip():assert 1 + 1 == 2

2、夾具(Fixtures):

  • 夾具得用法

    @pytest.fixture
    def numbers():print('我是前置代碼 用例運行之前執行')yieldprint('我是后置代碼 用例運行之前執行')
    其實這個東西你就理解成unittest框架中的setup teardown就是測試用例執行之前 執行之后自動運行的代碼
    ?
  • 夾具作用域

????????pytest中夾具的作用域 主要有五種:?

  1. function(默認作用域,每個測試函數都會調用一次夾具。
  2. class(每個測試類調用一次夾具
  3. module(每個測試模塊也就是當前的測試文件調用一次夾具。
  4. package(每個目錄調用一次夾具。
  5. session(整個測試會話也就是所有的測試用例只調用一次夾具
import pytest# function scoped fixture
@pytest.fixture(scope="function")
def func_scope_fixture():print("Setup for each test function")yieldprint("Teardown for each test function")

附:

這個實際運用中,例如在接口自動化測試中, 可以通過fixture提供全局的session
實現TCP復用,參數共享,cookies關聯,日志記錄,BaseURL

3、鉤子(hook):

鉤子:被pytest自動調用的函數,在 pytest 中,鉤子(hook)是特殊的插件機制,可以讓你在測試運行的不同階段插入自定義行為。

通過使用鉤子,你可以擴展或修改 pytest 的默認行為。例如,你可以在每個測試開始或結束時執行特定的操作,或在測試收集階段修改發現的測試項。
為了讓 pytest 使用這些鉤子,你需要將這些代碼放在項目中的 conftest.py 文件中。pytest 會自動發現并應用 conftest.py 中定義的鉤子。

  • 寫在confest文件中
  • 符合hook規范定義import _pytest.hookspec
# conftest.py
def pytest_configure(config):print("Configuring the test session.")def pytest_sessionstart(session):print("Test session starting.")


參數化和插件下篇說 寫不動了hh
3、pytest實現參數化-CSDN博客

4、pytest常用插件-CSDN博客

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

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

相關文章

恒流源電路深度解析:各類架構的優缺點與應用場景

點擊下面圖片,為您提供全新的嵌入式學習路線 文章目錄 ①. 單晶體管恒流源②. NPNPNP組合恒流源③. 雙晶體管恒流源④. 鏡像電流源⑤. 比例電流源⑥. 微電流源⑦. 加射極輸出的鏡像電流源⑧. 威爾遜電流源⑨.綜合對比表⑩.選型建議 恒流源是電子電路中的基礎模塊&…

研究生入學前文獻翻譯訓練

文獻翻譯 人工智能《Meta - Learning with Memory - Augmented Neural Networks》one-shot learning:Neural Turing Machines,NTMs《Model - Agnostic Meta - Learning for Fast Adaptation of Deep Networks》Meta - learninggradient stepsfinetune《Attention Is All You …

在IDEA中快速注釋所有console.log

在IDEA中快速注釋所有console.log 在前端IDEA中,快速注釋所有console.log語句可以通過以下步驟實現2: 打開要修改的文件。使用快捷鍵CtrlF打開搜索框。點擊打開使用正則搜索的開關或者通過AltR快捷鍵來打開。在搜索框輸入[]*console.log[]*,…

#C8# UVM中的factory機制 #S8.2.1# factory 機制重載法則

factory機制最偉大的地方在于其具有重載功能。重載并不是factory機制的發明,前面已經介紹過的所有面向對象的語言都支持函數/任務重載,另外,SystemVerilog還額外支持對約束的重載。只是factory機制的重載與這些重載都不一樣。 一 問題引出 以8.1.1節的代碼清單8-1和代碼清…

macOS 15 通過 MacPorts 安裝 PHP 7 構建錯誤找不到符號在 dns.o 中解決方法

構建遇到的問題如下: "_res_9_dn_expand", referenced from:_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_zif_dns_get_mx in dns.o..."_res_9_dn_skipname&…

MDK優化等級對浮點運算效率的影響

MDK優化等級:Default模式 和 O0模式 在支持浮點運算的MCU(如STM32的Cortex-M4或Cortex-M7系列)上,執行浮點運算的算法時,MDK編譯器的優化等級配置為 default模式(通常是O1或O2)和 O0模式&#…

嵌入式學習第二十八天--棧

棧的基本代碼 棧是限定僅在表尾進行插入和刪除操作的線性表。 先進后出、后進先出 棧頂:允許操作的一端 棧底:不允許操作的一端 入棧,出棧。 順序棧 鏈式棧 302\5 1.創建 CreateSeqStack 2.銷毀 DestroySeqStack 3.判斷是否為空棧 IsEmptySeqStack 4.判斷是否為滿…

MySQL中怎么分析性能?

MySQL中主要有4種方式可以分析數據庫性能,分別是慢查詢日志,profile,Com_xxx和explain。 慢查詢日志 先用下面命令查詢慢查詢日志是否開啟, show variables like slow_query_log;# 一般默認都是以下結果 ---------------------…

大模型在支氣管哮喘手術全流程風險預測與治療方案制定中的應用研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目標與方法 1.3 研究創新點 二、支氣管哮喘概述 2.1 定義與發病機制 2.2 分類與臨床表現 2.3 診斷標準與方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用案例分析 3.3 適用于支氣管哮喘預…

《AI Agent智能應用從0到1定制開發》學習筆記:使用RAG技術增強大模型能力,實現與各種文檔的對話

思維導圖 📚 引言 大型語言模型(如ChatGPT)雖然功能強大,但它們存在一些明顯的局限性。這些模型的知識庫更新較慢,無法實時學習最新內容,而且對私有數據或特定領域的專業知識了解有限。例如,Ch…

Python 爬蟲(4)HTTP協議

文章目錄 一、HTTP協議1、HTTP特點2、HTTP工作原理3、HTTP與HTTPS的區別 前言: HTTP(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最為廣泛的一種網絡協議,用于在客戶端和服務器之間傳輸超文本&#xf…

測試工程 常用Python庫

以下是測試工程師在Python中必須掌握的常用庫、框架以及提升日常工作效率的技巧總結: 一、必須掌握的Python庫與框架 1. 測試框架 unittest Python內置的單元測試框架,提供測試用例、測試套件、斷言等功能,適合單元測試和集成測試。核心組件…

【線程安全問題的原因和方法】【java形式】【圖片詳解】

在本章節中采用實例圖片的方式,以一個學習者的姿態進行描述問題解決問題,更加清晰明了,以及過程中會發問的問題都會一一進行呈現 目錄 線程安全演示線程不安全情況圖片解釋: 將上述代碼進行修改【從并行轉化成穿行的方式】不會出…

Infinite you:flexible photo recrafting while preserving your identity

基于DiT的id保留圖像生成面臨著多種挑戰,缺乏定制模塊設計,模型擴展的困難以及高質量數據的匱乏,因此基于flux的解決方案是相對稀缺的,pulid-flux是基于flux的id保留的初步嘗試,包括instantx和xlabs-ai的flux.1-dev ip-adapters,現有方法在三個關鍵方面保險不足:1.身份相…

Unity 實現一個簡易可拓展性的對話系統

本人能力有限,一切實現僅供參考,如有不足還請斧正 起因是我看到學校社團內有人做了對話系統的分享,我想了想之前沒寫過這種東西,而Fungus插件教程太老了,NodeCanvas插件學習成本又比較高,我就干脆尋找資料 加上自己迭代一下,花了一天時間完成了這個對話系統 目錄 1.介紹 2.核…

linux常用指令(6)

今天我們繼續學習一些linux常用指令,豐富我們linux基礎知識,那么話不多說,來看. 1.cp指令 功能描述:拷貝文件到指定目錄 基本語法:cp [選項] source dest 常用選項:-r:遞歸復制整個文件夾 拷貝文件: 拷貝文件夾&am…

Vue 3 中的路由傳參詳解※※※※

前言 在Vue應用中,路由傳參是非常常見的需求,它允許我們在不同的組件之間傳遞數據。Vue Router提供了兩種主要的方式來傳遞參數:query參數和params參數。下面我們將詳細探討這兩種傳參方式的使用方法和注意事項。 一、query參數 Query參數…

如何創建一個socket服務器?

1. 導入必要的庫 首先,需要導入Python的socket庫,它提供了創建和管理socket連接的功能。 python import socket 2. 創建服務器端socket 使用socket.socket()函數創建一個服務器端的socket對象,指定協議族(如socket.AF_INET表示…

lua垃圾回收

lua垃圾回收 lua 垃圾回收 lua 垃圾回收 collectgarbage(“count”)獲取當前lua腳本占用內存字節數(單位為KB)。 collectgarbage(“collect”)執行一次垃圾回收。 xxxnil 將變量置為空,會釋放內存。 lua中的機制和c#中回收機制很類似 解除羈絆(置為空)。 --垃圾回…

友思特應用 | 行業首創:基于深度學習視覺平臺的AI驅動輪胎檢測自動化

導讀 全球領先的輪胎制造商 NEXEN TIRE 在其輪胎生產檢測過程中使用了基于友思特伙伴Neurocle開發的AI深度學習視覺平臺,實現缺陷檢測率高達99.96%,是該行業首個使用AI平臺技術推動缺陷檢測自動化流程的企業。 將AI應用從輪胎開發擴展到制造過程 2024年…