Repolode
ionelmc

ionelmc/pytest-benchmark

一个 pytest 插件,提供 benchmark fixture,用于在测试中对 Python 函数进行计时基准测试。

Star
1,459
Fork
139
未关闭 Issue
125
最近提交
6天前

这是什么?

pytest-benchmark 为 pytest 增加了 benchmark fixture。把函数传给该 fixture 后,它会反复运行该函数,并将运行分组为按所选计时器校准的轮次,最后在 pytest 的汇总输出中给出计时结果。

调用 fixture 时可以传入位置参数或关键字参数。pedantic 模式则可以显式控制 setup 函数、迭代次数和轮次数。结果可以与之前的运行进行比较,也可以生成计时分布的直方图。

由于与 pytest 集成,基准测试就是普通的测试函数,用常规的 pytest 命令运行即可。该插件以单个函数为测量对象,若要测量一段较大的代码,需要将其包装成函数。

核心功能

  • 01提供 benchmark fixture,在 pytest 测试中对函数调用计时。
  • 02将测量结果按所选计时器校准后分组为多个轮次。
  • 03提供 pedantic 模式,可自定义 setup、迭代次数和轮次。
  • 04支持将结果与之前的基准测试运行进行对比。
  • 05可生成计时结果的直方图。

适用场景

  • 在不同提交之间跟踪 Python 函数的性能回归。
  • 在测试套件中比较同一函数的两种实现。
  • 在现有 pytest 工作流中对库的热点代码进行性能测量。

快速上手

  1. 1

    从 PyPI 安装该插件

    pip install pytest-benchmark

使用前须知

  • 它只能对单个函数进行基准测试,若要测量代码块或整个程序,需要编写包装函数。

标签

常见问题

pytest-benchmark 是什么?
一个 pytest 插件,提供 benchmark fixture,用于在测试中对 Python 函数进行计时基准测试。 pytest-benchmark 为 pytest 增加了 benchmark fixture。把函数传给该 fixture 后,它会反复运行该函数,并将运行分组为按所选计时器校准的轮次,最后在 pytest 的汇总输出中给出计时结果。
pytest-benchmark 可以免费使用吗?用的什么许可证?
pytest-benchmark 以 BSD-2-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
pytest-benchmark 还在维护吗?
活跃维护中。pytest-benchmark 最近一次提交是在 2026年11月1日。
pytest-benchmark 适合用来做什么?
在不同提交之间跟踪 Python 函数的性能回归。 在测试套件中比较同一函数的两种实现。 在现有 pytest 工作流中对库的热点代码进行性能测量。
pytest-benchmark 怎么安装和运行?
从 PyPI 安装该插件: pip install pytest-benchmark
在哪里获取 pytest-benchmark?
源代码和安装说明在 GitHub 上:https://github.com/ionelmc/pytest-benchmark

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目