2015-03-27 13 views
5

Ich verwende Python-Abdeckung, um meine Apps zu testen. Wenn ich mir andere Entwickler auf GitHub anschaue, sehe ich, dass sie ein kleines Abzeichen haben, das den Prozentsatz der Abdeckung anzeigt. Wie kann ich diese Abzeichen erstellen?Python Abdeckung Abzeichen, wie man sie bekommt?

Das Abdeckungskennzeichen ist das, das ich unten betrachte.

badges

Update: Es gibt Pakete, die Abzeichen heißt nose-htmloutput erzeugen! Cool

+1

Wage es nicht, auf sie zu klicken. – Carsten

+0

Diese Abzeichen sind normalerweise mit dem spezifischen Dienst verknüpft, der sie bereitstellt. Jedes Abzeichen wird normalerweise von einem anderen Dienst bereitgestellt. –

+0

@Carsten Ich habe verschiedene gesehen, die zu vielen verschiedenen 3rd-Party-Diensten gehen, wenn sie geklickt haben. Aber was ich wirklich wissen wollte, ist, ob dies etwas war, das tatsächlich durch die Paketabdeckung erzeugt wurde, wie Berichterstattung Berichte html, die enthalten sein könnten. – Prometheus

Antwort

4

Wenn Sie Abzeichen auf eigene Faust generieren möchten, könnten Sie versuchen, die gesamte Abdeckung Prozentsatz zu laden und dann ein Bild, someting wie folgt erstellen:

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) 

simple coverage badge

+0

Erstaunliche Antwort! Genau das, was ich brauchte! – Prometheus

+2

Es gibt einen viel einfacheren Weg als dieses Programm zu schreiben: benutze [shields.io] (http://shields.io). –

+0

@NedBatchelder Ja, ich habe das heute auch entdeckt. Ich denke immer noch darüber nach, ein Modul für die Herstellung dieser Abzeichen zu erstellen. – Carsten

6

Sie können klicken Sie auf auf diese Abzeichen und es wird in der Regel Sie zu dem Dienst, der sie bietet.

Die Abdeckung Abzeichen wird von https://coveralls.io/ bereitgestellt:

Coveralls ein Web-Service ist, dass Sie im Laufe der Zeit Ihre Code-Coverage zu helfen, zu verfolgen und sicherzustellen, dass alle neuen Code vollständig bedeckt ist.

Es gibt nur eine Voraussetzung:

  • Ihr Code muss

Sobald Sie die gewünschte Konfiguration und Integrationen oder Pakete angemeldet haben und enthalten auf GitHub gehostet werden bei der Entwicklung, Sie erhalten eine Bild-URL, die Sie in Ihre Projektdokumentation aufnehmen können. das python-coveralls Projekt hat:

.. image:: https://coveralls.io/repos/z4r/python-coveralls/badge.png?branch=master 
    :target: https://coveralls.io/r/z4r/python-coveralls 

in ihrer Readme zum Beispiel, die rendert als:

1

+0

Danke für die Antwort, ich dachte, das ist etwas, das durch die Paketabdeckung selbst erzeugt wurde. Danke – Prometheus

+0

Ich habe Pakete gefunden, die dies ohne eine dritte Partei tun, d. H. Nose-htmloutput – Prometheus

+0

@OrbiterFleet: Beachten Sie, dass das kein Bild irgendwo hostet. Wenn Sie über das Coverage-Bild auf ihren PyPI- und GitHub-Seiten sprechen, wird dies immer noch von coveralls.io gehandhabt. –

0

Ich habe ein Python-Abzeichen Generation Paket geschrieben, die Abzeichen sehr visuell ähnlich wie die wichtigsten Abzeichen Dienstleistungen produziert. Es ist sehr flexibel, Sie können es importieren und in Ihrem Python-Code verwenden oder über die Befehlszeile ausführen. Es ist einfach und in sich abgeschlossen.

Sie können die Plakettenbeschriftung und den Wert festlegen, und Sie können die Farbe basierend auf Schwellenwerten festlegen.Es gibt bereits vordefinierte Einstellungen für den Erfolg von Polylinsendeckeln, Abdeckungen und Pipelines. Sie können jedoch jedes beliebige Badge erstellen. Hier

ist ein Link auf die GitHub Projekt mit detaillierteren Dokumentation: https://github.com/jongracecox/anybadge

Installieren mit pip install anybadge

Beispiel Python-Code:

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') 

Beispiel Befehlszeile verwenden:

anybadge --label pylint --value 2.22 --file pylint.svg 2=red 4=orange 8=yellow 10=green 
Verwandte Themen