Python覆盖徽章,如何获得它们?

Pro*_*eus 12 python django code-coverage

我正在使用Python覆盖来测试我的应用程序.看看GitHub上的其他开发者,我看到他们有一个小徽章,显示了覆盖率.使用coverage,我该如何生成这些徽章?

我正在看下面的覆盖徽章.

徽章

更新:有一些包生成徽章,即nose-htmloutput!凉

Mar*_*ers 9

您可以单击这些徽章,它通常会将您带到提供它们的服务.

保险范围徽章由https://coveralls.io/提供:

Coveralls是一项Web服务,可帮助您跟踪代码覆盖率,并确保完全覆盖您的所有新代码.

只有一个先决条件:

  • 您的代码必须托管在GitHub上

一旦您在开发时注册并包含所需的配置和集成或软件包,您将获得一个图像URL以包含在项目文档中; 该python-coveralls项目有:

.. image:: https://coveralls.io/repos/z4r/python-coveralls/badge.png?branch=master
    :target: https://coveralls.io/r/z4r/python-coveralls
Run Code Online (Sandbox Code Playgroud)

例如,在他们的README中,它呈现为:

1

  • 谢谢您的回答,我认为这是由包覆盖范围本身产生的。谢谢 (2认同)

Dan*_*gen 7

根据 Carsten 的回答,PyPI 上现在有一个 MIT 许可的工具,用于生成 SVG 覆盖徽章:

https://github.com/dbrgn/coverage-badge
https://pypi.python.org/pypi/coverage-badge


Car*_*ten 5

如果您想自己生成徽章,则可以尝试加载总覆盖率百分比,然后创建图像,如下所示:

from PIL import Image, ImageDraw, ImageFont
from coverage import coverage

cov = coverage()
cov.load()
total = cov.report()

# total = 79.0

im = Image.new("RGB", (120, 20))
fnt = ImageFont.load_default()
d = ImageDraw.Draw(im)

d.text((10, 5), "coverage:", fill=(255, 255, 255), font=fnt)
d.rectangle([(80, 0), (150, 20)], fill=(220, 0, 0))
d.text((90, 5), "{:.0f}%".format(total), fill=(0, 0, 0), font=fnt)
Run Code Online (Sandbox Code Playgroud)

简单承保徽章

  • 比编写此程序要简单得多:使用[shields.io](http://shields.io)。 (3认同)

JGC*_*JGC 5

我编写了一个 python 徽章生成包,它生成的徽章在视觉上与主要徽章服务非常相似。它非常灵活,您可以在 python 代码中导入和使用,或者从命令行运行。它很简单,而且独立。

您可以设置徽章标签和值,并且可以根据阈值设置颜色。有针对 pylint、覆盖范围和管道成功的预构建设置,但您可以创建您喜欢的任何徽章。

以下是 github 项目的链接,其中包含更详细的文档: https: //github.com/jongracecox/anybadge

安装与pip install anybadge

示例Python代码:

import anybadge

# Define thresholds: <2=red, <4=orange <8=yellow <10=green
thresholds = {2: 'red',
              4: 'orange',
              6: 'yellow',
              10: 'green'}

badge = anybadge.Badge('pylint', 2.22, thresholds=thresholds)

badge.write_badge('pylint.svg')
Run Code Online (Sandbox Code Playgroud)

命令行使用示例:

anybadge --label pylint --value 2.22 --file pylint.svg 2=red 4=orange 8=yellow 10=green
Run Code Online (Sandbox Code Playgroud)