当前位置: 首页 > ai >正文

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.xdnf.cn/news/18329.html

相关文章:

  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 【Protues仿真】基于AT89C52单片机的数码管驱动事例
  • Windows下,将本地视频转化成rtsp推流的方法
  • strcasecmp函数详解
  • AI模型部署 - 大语言模型(LLM)部署技术与框架
  • js来比较两个对象内容有误差异
  • mysql数据库学习
  • 想在手机上操作服务器?cpolar让WaveTerminal终端随身携带,效率倍增
  • 【Springboot进阶】Java切面编程对性能的影响深度分析
  • 【Ruoyi解密-02.登录流程:】登录-找密码不抓瞎
  • selenium3.141.0执行JS无法传递element解决方法
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 完全背包(模板)
  • webrtc中win端音频---windows Core Audio
  • 2025图表制作完全指南:设计规范、工具选型与行业案例
  • Chrome/360 浏览器扩展深度解析:内置扩展与普通扩展的实现机制对比
  • (栈)Leetcode155最小栈+739每日温度
  • 力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
  • Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
  • 【C++去除整数某一位数字求新数和倍数保留2位小数控制】2022-10-22
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 打造医疗新质生产力
  • 如何用算力魔方4060安装PaddleOCR MCP 服务器
  • visual studio更改git提交的用户名和邮件
  • Seaborn数据可视化实战:Seaborn基础与实践-数据可视化的艺术
  • 高效处理NetCDF文件经纬度转换:一个纯CDO驱动的Bash脚本详解
  • [大模型微调]基于llama_factory用 LoRA 高效微调 Qwen3 医疗大模型:从原理到实现
  • WPF中UI线程频繁操作造成卡顿的处理
  • 中文房间悖论:人工智能理解力的哲学拷问
  • 深度解析游戏引擎中的相机:视图矩阵