测试覆盖率的强大(终端)视图。
项目描述
“测试覆盖率的强大视图”
此包提供的命令行工具 cuv 可以提供一些可视化项目覆盖率数据的实用工具。这意味着您必须首先对项目的测试套件运行 coverage。
一旦您有了 .coverage 文件,您可以使用以下文档中的命令(或者只需键入 cuv 来查看帮助)。
我们利用几个高质量的开放源代码包来实现这一功能
coverage by Ned Batchelder
Click by Armin Ronacher / pocoo
pygments by Georg Brandl / pocoo
ansicolors by Giorgos Verigakis
unidiff by Matias Bordese
Source Code Pro: 最好的编程字体
代码: https://github.com/meejah/cuvner 文档: https://cuvner.readthedocs.org
背景 + 术语
这最初是一些关于“整个项目覆盖率可视化”的实验,然后还增长了一些我在与Python代码一起工作时发现有用的控制台工具。
我已经放弃将像素/图形可视化想法和证明概念放入分支,现在这个工具只是控制台可视化——这对于处理Python代码非常有用。
就我的设置而言,我使用的是Solarized Dark颜色方案的256色和Unicode兼容的shell的Debian。可能存在其他设置的问题,并且我在合理范围内愿意接受修复这些问题的pull-reqeusts。也就是说,一个Unicode兼容的shell是必须的。
其他漂亮的可视化
我遇到的其他一些不错的“覆盖率可视化”工具
当然,Coverage.py 本身就带有漂亮的 HTML 可视化
codecov.io 浏览器扩展 在浏览 GitHub 时显示覆盖率
关于 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 graph 和 cuv lessopen(可以通过 LESSOPEN 环境变量直接与 less 相关联)。对于确定分支或单个提交的覆盖率,请使用 cuv diff。 cuv spark 可以提供项目覆盖率的快速概述。
cuv graph
这显示您项目中的所有文件及其覆盖率类似直方图的图表。每个字符代表 8 行代码,并使用一组 Unicode 字符(从 0x2580 到 0x2587)来绘制小图表。因此,如果这 8 行完全没有覆盖,图表将是全红色;如果它们全部被覆盖,则全部是绿色。如果有 2 行被覆盖,大约 25% 是绿色,其余是红色。
因此,可以很容易地看到每个文件的总大小(通过直方图部分的长度,如果需要可以换行),并给出哪些部分被覆盖的概览。
待办事项
在更多终端类型上进行测试
当使用 Solarized Dark 之外的东西时,看起来怎么样?
除了装饰之外还有什么用处?
cuv lessopen
此命令旨在通过 LESSOPEN 环境变量使用,该变量允许您预处理使用 less 打开的文件。因此,一旦设置(通过 cuv lessopen --help 获取帮助),您只需在项目中的任何文件上运行 less,它就会进行语法高亮显示,并显示带有前导绿色或红色迷你垂直条和红色背景(用于未覆盖的行)的逐行覆盖率。
顶部显示该特定文件的覆盖率总和。
待办事项
cuv diff
您可以将 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
这会在控制台中显示一种类似于“火花线”的东西。对于大型项目(例如 Twisted)来说并不是很有用,但它可以在很小的空间内提供一个快速的整体覆盖情况。使用与 cuv graph 相同的 Unicode 字符,每个文件表示为一个单独的字符,并绘制其覆盖率百分比(因此,您只能得到大约 12.5% 的粒度)。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
cuvner-22.4.0-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b4359d9bca66f546119ea77c6de9039e7360274403852d3c684cc511ad3f3fb5 |
|
MD5 | f477d383ed28ba7fe4d990f051633063 |
|
BLAKE2b-256 | 9175738b247f8f10ac0f2832677116704b42f115263e2acf6227de6ed7ea8894 |