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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…