Pytest 插件怎么寫:從0開發一個你自己的插件

概述

你用過 pytest-html 生成報告,或用 pytest-xdist 并行運行測試嗎?這些強大的功能,其實都是 Pytest 插件

這些都是我們引入項目后直接使用的,當然 你也可以自己寫一個 Pytest 插件

基本原理

Pytest 的強大,源于它的 插件系統。它允許你通過定義特定的函數(稱為 Hook),來“插入”到 Pytest 的執行流程中,從而改變或增強它的行為

Hook 函數

Pytest 定義了一系列 鉤子函數(Hook),比如:

  • pytest_runtest_setup(item):每個測試開始前調用
  • pytest_runtest_teardown(item):每個測試結束后調用
  • pytest_addoption(parser):添加命令行參數
  • pytest_configure(config):配置初始化時調用

你只需要在插件中實現這些函數,Pytest 就會自動調用它們

插件的兩種形式

  1. 獨立的 Python 包(發布到 PyPI)
  2. 項目內的 conftest.py 文件(本地使用)

我們先從最簡單的開始:在 conftest.py 中寫插件

寫一個“測試耗時統計”插件

我們來寫一個插件,自動統計每個測試用例的執行時間,并輸出耗時過長的用例

第一步:創建項目結構

my_project/
├── tests/
│   ├── conftest.py      ← 插件寫在這里
│   └── test_example.py  ← 測試用例

第二步:編寫插件代碼(conftest.py

# conftest.py
import time
import pytest# 存儲測試耗時
test_durations = {}def pytest_addoption(parser):"""添加命令行參數"""parser.addoption("--slow-threshold", type=float, default=1.0,help="慢測試的閾值(秒),默認1秒")def pytest_configure(config):"""配置初始化"""config.addinivalue_line

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

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

相關文章

Java:IO流——基礎篇

目錄 前言 一、File 類 1、概述 ①構造方法 ②實例對象 2、使用 ①查看名稱、路徑、長度 ②判斷、創建和刪除操作 ③目錄遍歷操作 二、IO流 1、流的概念 2、流的分類 ①按數據流向 ②按數據類型 ③按功能 3、字節流 ⑴FileInputStream——文件輸入流 ⑵FileOutputStream——文件…

數據挖掘 5.1~5.2 PCA——前言

5.1 Twelve ways to fool the masses 5.1 愚弄大眾的十二種方法 5.2.1 Prelim: Old MacDonald meets Lagrange 5.2.1 前言:老麥克唐納遇見拉格朗日 5.2. Prelim: Meet stubborn vectors 5.2. 前言:遇見頑固向量 5.2.3 Prelim: Covariance and its friend…

DeepSeek分析

(非走向數字時代,融入數字生活,構建數字生態的分解,只是感覺可以分享給大家---因此現設置VIP,旺海涵) 這是deepseek剛爆的時候,春節緊急對其做的分析。 內容還是私藏狀態,做了初步評估,感覺可以分享給大家!!! 但是非共享的構建數字生態的核心,因此添加了vip設置…

2025第五屆人工智能、自動化與高性能計算國際會議 (AIAHPC 2025)

重要信息 官網:www.aiahpc.org 時間:2025年9月19-21日 地點:中國合肥 主題 1、高性能計算 并行和分布式系統架構 高性能計算的語言和編譯器 并行和分布式軟件技術 并行和分布式算法 嵌入式系統 計算智能 點對點計算 網格和集群計算…

CORS解決跨域問題的多個方案 - nginx站點配置 / thinkphp框架內置中間件 / 純前端vue、vite的server.proxy代理

效果圖 跨域報錯 跨域解決 方案實測 1. nginx、apache站點配置 > OK 2. thinkphp框架內置中間件 “跨域請求支持” > OK 3. 純前端vue、vite的server.proxy代理 > 不OK 方案具體設置 1. nginx、apache站點配置 > OK 修改nginx服務器的站點的跨域信息 日志下…

什么是Omni-Hub?一套面向“萬物智聯”時代的操作系統級方法論

Omni-Hub(中文常譯“全向中樞”),是一套面向未來數字化生態的開放型系統級框架,由“Omni”(全域、全向、全模態)與“Hub”(中樞、樞紐)組合而成,旨在通過統一接口、協議與…

ARP地址解析協議

工作原理ARP是一個封裝于數據鏈路層的二層協議,其目的主要是將IP地址解析為MAC地址,通過廣播🔉詢問Who is x.x.x.x,對方收到后單播回應自己的mac地址動態ARP動態ARP通過ARP協議自動學習和維護IP與MAC的映射關系,表項具…

PortSwigger靶場之Blind SQL injection with out-of-band interaction通關秘籍

一、題目分析 該實驗室存在一個盲 SQL 注入漏洞。該應用程序使用跟蹤 cookie 進行分析,并執行包含所提交 cookie 值的 SQL 查詢。該 SQL 查詢是異步執行的,不會對應用程序的響應產生影響。不過,我們可以與外部域觸發非帶內交互。要解決此漏洞…

筆試-筆記3

1.在以下聲明中哪一個表示“指向常量的指針”(指針指向的內容不能修改)? A.char* const p B.const char* p C.char *p const D.char const p 解析: 選B,const修飾的變量為常量,意味著不能修改 A是常量指針,const修飾的…

Linux正則表達式

文章目錄一、Linux正則表達式與三劍客知識1.什么是正則表達式?2.為什么要學習正則表達式?3.有關正則表達式容易混淆的事項4.學習正則表達式注意事項5. 正則表達式的分類5.1 基本的正則表達式(BRE)集合6. 正則表達式測試題7. 擴展正…

MATLAB Figure畫布中繪制表格詳解

文章目錄 1 使用uitable創建帶有樣式和顏色映射的表格 2 使用imagesc和text創建自定義表格 3 使用patch和text創建完全自定義的表格 4 代碼詳細講解 4.1 使用uitable 4.2 使用imagesc和text 4.3 使用patch和text 5 顏色映射技巧 5.1 使用內置顏色映射 5.2 自定義顏色映射函數 5…

Python在語料庫建設中的應用:文本收集、數據清理與文件名管理

一、問題的提出在日常語言學習與教學中,語料庫是一個不可或缺的工具。它可以幫助我們查找高頻詞,獲取搭配信息、例句信息、關鍵詞信息等。由于建庫過程操作步驟多,有時還要用到圖片識別、格式轉化、文本清理等技巧,很多人往往都止…

STL——priority_queue的使用(快速入門詳細)

目錄 前言 一、基本知識 二、使用 前言 priority_queue是在queue庫里的,所以使用的時候要包含queue頭文件。使用方法和堆類似,因為它的底層其實就是大根堆。 一、基本知識 優先隊列優先級隊列是一種容器適配器,根據一些嚴格的弱排序標準&…

MATLAB中函數的詳細使用

一、函數基本知識function語法: function [,...,] myfun(,...,), …

服務器初始化流程***

前言在云計算與自動化運維日益成熟的今天,快速、批量地部署服務器已成為常態。然而,一臺新構建的云服務器或新安裝的物理服務器,僅僅是一個可運行的操作系統內核,遠未達到投入生產環境或開發測試的標準。一個缺乏標準化配置的“裸…

Python實現電商Excel讀取進行可視化分析

目錄專欄導讀項目簡介功能特性📊 數據處理功能📈 統計分析功能🎨 可視化功能📋 報告生成項目結構安裝和使用環境要求安裝步驟使用自己的數據依賴包說明輸出文件說明靜態圖表(PNG格式)交互式圖表&#xff08…

肌肉力量訓練

健身一年多瘦了十幾斤,沒有像上次一樣吃輕食哦。每天早晨跑步或者做力量訓練,中午和晚上吃完飯遛遛彎,堅持下來就好了。 但力量訓練一直沒有請教練,自己也沒查資料,算是瞎練吧。最近發現了一本好書,講解如何…

微服務-27.配置管理-什么是配置管理

一.配置管理到目前為止我們已經解決了微服務相關的幾個問題:微服務遠程調用微服務注冊、發現微服務請求路由、負載均衡微服務登錄用戶信息傳遞不過,現在依然還有幾個問題需要解決:我們發現很多微服務中的配置文件里的配置都是重復的。修改編輯…

【RAGFlow代碼詳解-13】RAG 管道

管道架構概述 RAG 管道由多個處理階段組成,這些階段將文本內容轉換為適合智能檢索的結構化知識表示:文檔到知識圖譜工作流程 主要處理工作流程通過 run_graphrag 功能將單個文檔塊轉換為統一的知識圖譜:GraphRAG 處理方法 RAGFlow 支持兩種不…

深度學習——模型訓練

以Pytorch自帶的手寫數據集為例。我們已經構建了一個輸入層(28*28),兩個隱藏層(128和256),一個輸出層(10)的人工神經網絡。并且結合非線性激活函數sigmoid定義前向傳播的方向。class…