更快的分支覆盖率测量
💡
原文英文,约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,效率低下,因为每次执行的行都会重复调用记录函数,造成不必要的开销。
➡️