【Pytest】Pytest常用的第三方插件

目录

  • [1 Pytest插件生态简介](#1 Pytest插件生态简介)
  • [2 常用的第三方插件](#2 常用的第三方插件)
    • [2.1 pytest-html](#2.1 pytest-html)
    • [2.2 pytest-xdist](#2.2 pytest-xdist)
    • pytest-rerunfailures
    • [2.4 pytest-result-log](#2.4 pytest-result-log)
  • 写在最后

1 Pytest插件生态简介

在Python的测试框架中,pytest 是一个非常流行和强大的选择,它提供了许多扩展插件来增强其功能。pytest 插件生态系统非常丰富,涵盖了从简单的断言扩展到复杂的测试框架集成等多种功能。

插件主要分为如下两类:

  • 内置插件,这类插件不需要单独按照
  • 第三方插件,需要单独安装

对于插件的启动/禁用通过命令行即可实现

shell 复制代码
pytest -p xxx  # 启用插件xxx
pytest -p no:xxx  # 禁用插件xxx

本文就一些常用的第三方插件做简要介绍,更多内容可阅读官方文档:https://docs.pytest.org/en/latest/how-to/plugins.html

2 常用的第三方插件

2.1 pytest-html

pytest-html 用于生成 HTML 格式的测试报告。这个插件可以帮助你更直观地查看测试结果,特别是对于大型测试套件来说,HTML 报告提供了更好的组织和可视化效果。

安装:

shell 复制代码
pip install pytest-html

使用方法:

方式一:命令行

shell 复制代码
pytest --html=report.html --self-contained-html

方式二:配置文件pytest.ini

shell 复制代码
[pytest]

addopts = --html=report.html --self-contained-html

效果:

pytest运行后,测试结果记录在一个html文件中

2.2 pytest-xdist

pytest-xdist 允许在多个 CPU 上并行运行测试,从而显著提高测试的执行速度。这对于大型项目尤其有用,因为它们通常包含大量的测试用例。

1.安装与基本使用

shell 复制代码
pip install pytest-xdist

命令行参数‌:

-n auto:自动检测CPU核心数并分配进程。

-n 4:指定4个进程执行。

2.核心功能

‌负载分配策略‌:

--dist=load:动态分配测试用例(默认)。

--dist=loadscope:按测试类分组,确保类内用例在同一进程执行。

--dist=loadfile:按文件分配,适合文件间独立场景。

‌适用场景‌:适合CPU密集型测试,需保证用例独立、无依赖。

3.执行流程

(1) 解析命令行参数,获取分发模式。

(2) 加载并分发测试用例到不同进程。

(3) 并行执行测试用例。

(4) 汇总结果并清理资源。

4.注意事项

用例设计‌:需满足独立运行、无特定执行顺序、结果互不影响。

‌资源占用‌:建议使用不超过1/2的CPU核心数,避免系统卡顿。

pytest-rerunfailures

pytest-rerunfailures是pytest的插件,用于自动重试失败的测试用例,提高测试稳定性。

1.核心功能

  • 自动重试‌:失败时自动重试,直到通过或达到最大重试次数。
  • 灵活配置‌:支持命令行参数(--reruns、--reruns-delay)和装饰器(@pytest.mark.flaky)。

2.使用方式

‌安装‌:

shell 复制代码
pip install pytest-rerunfailures

‌命令行参数‌:

--reruns n:指定重试次数(如--reruns 3)。

--reruns-delay m:设置重试间隔(如--reruns-delay 5)。

‌装饰器‌:

@pytest.mark.flaky(reruns=5):为特定用例设置重试次数。

3.注意事项

‌兼容性‌:与pytest-xdist的--looponfail标志不兼容。

‌优先级‌:装饰器参数优先级高于命令行参数。

示例代码

python 复制代码
import random


def test_rerun():
    x = random.randint(0, 9)
    assert x >= 5

从结果可以看到,执行用例重试第3次成功

2.4 pytest-result-log

‌1.核心功能‌

‌日志记录‌:自动记录所有测试用例的执行结果(包括未选中、跳过、fixture错误的用例)。

‌兼容性‌:通过钩子机制,确保所有用例结果都能被准确记录。

2.安装与配置‌

shell 复制代码
pip install pytest-result-log

在 pytest.ini 中配置:

shell 复制代码
log_cli = true
log_cli_level = INFO
log_cli_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S

log_file = ./log/pytest.log
log_file_level = INFO
log_file_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S

3. ‌使用场景‌

  • 测试结果归档‌:生成可持久化的测试日志文件,便于后续分析。
  • 问题排查‌:记录所有用例执行状态,避免因未执行用例导致的遗漏。

4.‌注意事项‌

‌版本兼容性‌:pytest 6.1.0+ 版本移除了原生 result_log 支持,需使用 pytest-result-log 插件。

‌替代方案‌:若需生成HTML报告,推荐使用 pytest-html 插件。

5.‌常见问题‌

‌配置错误‌:若出现 Unknown config option: result_log 警告,需检查配置文件或升级 pytest 版本。

‌推荐‌:若需生成HTML报告,建议使用 pytest-html 插件,配置更直观、报告更美观。

效果预览:


写在最后

本文已被专栏 测试开发知识库 收录,欢迎 点击订阅专栏

以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

相关推荐
odoo中国1 天前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
Jelena157795857921 天前
Java爬虫api接口测试
python
踩坑记录1 天前
leetcode hot100 3.无重复字符的最长子串 medium 滑动窗口(双指针)
python·leetcode
诸神缄默不语1 天前
Python处理Word文档完全指南:从基础到进阶
python
海棠AI实验室1 天前
第四章 项目目录结构:src/、configs/、data/、tests/ 的黄金布局
python·项目目录结构
爱笑的眼睛111 天前
超越可视化:降维算法组件的深度解析与工程实践
java·人工智能·python·ai
清铎1 天前
leetcode_day12_滑动窗口_《绝境求生》
python·算法·leetcode·动态规划
ai_top_trends1 天前
2026 年工作计划 PPT 横评:AI 自动生成的优劣分析
人工智能·python·powerpoint
TDengine (老段)1 天前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
vyuvyucd1 天前
深入解析Python asyncio:异步编程核心原理
开发语言·python