更快的分支覆盖率测量

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

经过近两年的努力,coverage.py 现已支持通过 sys.monitoring 更高效地测量分支覆盖率。用户需从 GitHub 获取 Python 主分支的构建版本并安装 coverage,设置环境变量后运行 coverage 将更快。此功能基于 Python 3.12 的新 sys.monitoring,解决了传统方法的低效问题。

🎯

关键要点

  • 经过近两年的努力,coverage.py 现已支持通过 sys.monitoring 更高效地测量分支覆盖率。
  • 用户需从 GitHub 获取 Python 主分支的构建版本。
  • 需要安装 coverage.py 的 GitHub 版本,尚未在 PyPI 发布。
  • 设置环境变量 COVERAGE_CORE=sysmon 后运行 coverage,性能将更快。
  • 传统方法依赖 sys.settrace,效率低下,新方法利用 sys.monitoring 解决了这一问题。
  • Python 3.12 引入的 sys.monitoring 允许在事件触发后禁用,从而减少重复调用的开销。
  • 经过多次讨论,最终确定了适用于测量分支和行的事件行为。

延伸问答

如何使用 coverage.py 测量分支覆盖率?

用户需要从 GitHub 获取 Python 主分支的构建版本,并安装 coverage.py。设置环境变量 COVERAGE_CORE=sysmon 后运行 coverage,即可更快地测量分支覆盖率。

coverage.py 的新功能有什么优势?

新功能通过 sys.monitoring 提高了测量分支覆盖率的效率,解决了传统方法依赖 sys.settrace 的低效问题。

为什么需要从 GitHub 安装 coverage.py?

因为当前的代码尚未在 PyPI 发布,用户需要从 GitHub 安装最新的构建版本以使用新功能。

Python 3.12 的 sys.monitoring 有什么新特性?

sys.monitoring 允许在事件触发后禁用,从而减少重复调用的开销,提高了性能。

使用 coverage.py 测量分支覆盖率时需要注意什么?

用户需要确保安装了正确的 Python 构建版本,并设置环境变量 COVERAGE_CORE=sysmon,以确保性能提升。

coverage.py 的传统方法有什么缺陷?

传统方法依赖 sys.settrace,效率低下,因为每次执行的行都会重复调用记录函数,造成不必要的开销。

➡️

继续阅读