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

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.dtcms.com/a/342027.html

相关文章:

  • SamOutVXP: 轻量级高效语言模型
  • 用nohup setsid绕过超时断连,稳定反弹Shell
  • Spring 循环依赖:从 “死锁” 到 “破局” 的完整解析
  • 在.NET 8 中使用中介模式优雅处理多版本 API 请求
  • 大数据毕业设计选题推荐-基于大数据的鲍鱼多重生理特征数据可视化分析系统-Spark-Hadoop-Bigdata
  • AUTOSAR自适应平台(AP)中元类(Metaclass)、建模(Modeling) 和 ARXML 这三者的核心关系与区别
  • 阿里云上部署nuxt开发的项目(SSG和SSR混合渲染)
  • Qwen2-阿里云最新发布的通义千问开源大模型
  • AR眼镜在制造业的生产设备智慧运维方案介绍
  • CRMEB私域电商系统后台开发实战:小程序配置全流程解析
  • Unity 二进制读写小框架
  • 机器人 - 无人机基础(4) - FreeRTOS
  • MFC随笔—不使用对话框资源模板创建对话框
  • 嵌入式ARM程序高级调试基础:8.QEMU ARM虚拟机与tftp配置
  • QT的项目pro qmake编译
  • OpenCV结构光三维重建类cv::structured_light::GrayCodePattern
  • 01 网络信息内容安全--绪论
  • OpenCV图像色彩空间转换
  • OpenCV图像形态学操作
  • SigNoz 外置 ClickHouse 高可用部署实践
  • Qt二维码生成器项目开发教程 - 从零开始构建专业级QR码生成工具
  • AI + 云原生 + ITSM 的三重融合:企业数字化转型的新引擎
  • Azure官网为何没直接体现专业服务
  • unity之物体旋转
  • 使用 queryParameters:参数,拦截到所有mars3d的网络请求
  • PPIO首发上线DeepSeek-V3.1,Agent 能力大幅提升
  • 驱动-在自定义总线上创建驱动-分析驱动注册流程
  • Linux笔记---策略模式与日志
  • Neovim clangd LSP 配置出现 “attempt to call field ‘ge‘”
  • [论文阅读] 人工智能 + 软件工程 | 当AI成为文学研究员:Agentic DraCor如何用MCP解锁戏剧数据分析