跳转到主要内容

测试覆盖率的强大(终端)视图。

项目描述

“测试覆盖率的强大视图”

ReadTheDocs

此包提供的命令行工具 cuv 可以提供一些可视化项目覆盖率数据的实用工具。这意味着您必须首先对项目的测试套件运行 coverage

一旦您有了 .coverage 文件,您可以使用以下文档中的命令(或者只需键入 cuv 来查看帮助)。

我们利用几个高质量的开放源代码包来实现这一功能

代码: https://github.com/meejah/cuvner 文档: https://cuvner.readthedocs.org

背景 + 术语

这最初是一些关于“整个项目覆盖率可视化”的实验,然后还增长了一些我在与Python代码一起工作时发现有用的控制台工具。

我已经放弃将像素/图形可视化想法和证明概念放入分支,现在这个工具只是控制台可视化——这对于处理Python代码非常有用。

就我的设置而言,我使用的是Solarized Dark颜色方案的256色和Unicode兼容的shell的Debian。可能存在其他设置的问题,并且我在合理范围内愿意接受修复这些问题的pull-reqeusts。也就是说,一个Unicode兼容的shell是必须的。

其他漂亮的可视化

我遇到的其他一些不错的“覆盖率可视化”工具

关于 Tox 的说明

如果您正在使用 tox 来运行测试(您应该这样做,它很棒!)根据配置,您的覆盖率文件将最终位于 .tox/envname/.coverage 或类似的位置。因此,您可能需要使用 --coverage 来指示 cuv’ner 正确的文件,或者简单地将其移动到项目的顶层以方便使用。

专业技巧

“未覆盖”的行以与“已覆盖”行略有不同的 Unicode 字符开始,因此如果您正在尝试为未覆盖的内容编写测试,您可以在“下一个有未覆盖内容的文件”上这样做

cuv src/file.py | less -p-j 4

这意味着(因为 cuv lessopen 是“默认”命令),对 src/file.py 运行 cuv lessopen,然后在 less 中跳转到第一行未覆盖的行,并将其放置在屏幕顶部以下 4 行。然后您可以在 less 中按 n 键转到下一个。

这正是 cuv next 命令所做的事情。

控制台可视化

可以直接在控制台中使用的两个主要工具是 cuv graphcuv lessopen(可以通过 LESSOPEN 环境变量直接与 less 相关联)。对于确定分支或单个提交的覆盖率,请使用 cuv diffcuv spark 可以提供项目覆盖率的快速概述。

cuv graph

console graph, showing txtorcon code

这显示您项目中的所有文件及其覆盖率类似直方图的图表。每个字符代表 8 行代码,并使用一组 Unicode 字符(从 0x2580 到 0x2587)来绘制小图表。因此,如果这 8 行完全没有覆盖,图表将是全红色;如果它们全部被覆盖,则全部是绿色。如果有 2 行被覆盖,大约 25% 是绿色,其余是红色。

因此,可以很容易地看到每个文件的总大小(通过直方图部分的长度,如果需要可以换行),并给出哪些部分被覆盖的概览。

待办事项

  • 在更多终端类型上进行测试

  • 当使用 Solarized Dark 之外的东西时,看起来怎么样?

  • 除了装饰之外还有什么用处?

cuv lessopen

pygments + coverage coloring in console

此命令旨在通过 LESSOPEN 环境变量使用,该变量允许您预处理使用 less 打开的文件。因此,一旦设置(通过 cuv lessopen --help 获取帮助),您只需在项目中的任何文件上运行 less,它就会进行语法高亮显示,并显示带有前导绿色或红色迷你垂直条和红色背景(用于未覆盖的行)的逐行覆盖率。

顶部显示该特定文件的覆盖率总和。

待办事项

  • 这可能是一种通过 Pygments 插件或某种扩展来实现的方式

  • 更改哪个 Pygments 样式使用的选项

  • 深色/浅色背景选项?

cuv diff

showing "cuv diff" colouring

您可以将 git diff 输出到这里,并在您的控制台中看到差异的彩色版本。我正在使用一个名为 unidiff 的库来读取实际的差异,到目前为止效果相当不错。但说到这里,我只尝试了与 Git 输出的对比,如下所示:

git diff | cuv diff | less

待办事项

  • 颜色不满意,因为对于添加的行,它们基本上与 Git 的彩色输出相同。

  • 也许让它看起来更像“真实”的底层差异?(例如,重新创建 @@ 等等)

  • 它与合并提交一起工作吗?

cuv 报告

分析差异文件(类似于 cuv diff),但输出一些简要的统计数据而不是整个差异。例如

$ git diff master.. | cuv report -
98.7%: 986 covered of 999 added lines (leaving 13 missing)

cuv spark

spark-line coverage of txtorcon

这会在控制台中显示一种类似于“火花线”的东西。对于大型项目(例如 Twisted)来说并不是很有用,但它可以在很小的空间内提供一个快速的整体覆盖情况。使用与 cuv graph 相同的 Unicode 字符,每个文件表示为一个单独的字符,并绘制其覆盖率百分比(因此,您只能得到大约 12.5% 的粒度)。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

此版本没有可用的源分发文件。请参阅 生成分发存档教程

构建分发

cuvner-22.4.0-py2.py3-none-any.whl (82.3 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面