2015-03-27 3 views
5

Sto usando la copertura Python per testare le mie app. Guardando altri sviluppatori su GitHub vedo che hanno un piccolo badge che mostra la percentuale di copertura. Usando la copertura, come posso generare questi badge?Badge di copertura Python, come ottenerli?

Il badge di copertura è quello che sto guardando di seguito.

badges

Update: Ci sono pacchetti che generano distintivi ovvero naso-htmloutput! Cool

+1

Non osare cliccarci sopra. – Carsten

+0

Questi badge solitamente si collegano al servizio specifico che li fornisce. Ogni badge viene solitamente fornito da un servizio diverso. –

+0

@Carsten Ho visto diversi che vanno a molti servizi di terze parti diversi quando cliccato. Ma quello che volevo sapere davvero è che se questo fosse qualcosa effettivamente generato dalla copertura del pacchetto, io ... mi piacciono i resoconti di copertura in html che potrebbero essere inclusi. – Prometheus

risposta

4

Se si desidera generare badge sul proprio, si potrebbe tentare di caricare la percentuale di copertura totale e quindi creare un'immagine, someting in questo modo:

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

Sorprendente risposta! Proprio quello di cui avevo bisogno! – Prometheus

+2

C'è un modo molto più semplice di scrivere questo programma: usa [shields.io] (http://shields.io). –

+0

@NedBatchelder Sì, l'ho scoperto anche oggi. Sto ancora pensando di creare un modulo per creare questi badge. – Carsten

6

È possibile fare clic su su quei badge e generalmente ti porterà al servizio che li fornisce.

Il badge di copertura è fornito da https://coveralls.io/:

Tute è un servizio web che consente di monitorare la copertura del codice nel corso del tempo, e garantire che tutto il vostro nuovo codice è completamente coperto.

non c'è che un prerequisito:

  • Il codice deve essere ospitato su GitHub

Una volta che avete firmato e inclusa la configurazione necessaria ed integrazioni o pacchetti, quando in via di sviluppo, ti viene fornito un URL dell'immagine da includere nella documentazione del tuo progetto; il progetto python-coveralls ha:

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

nella loro README per esempio, che rende come:

1

+0

Grazie per la risposta, stavo pensando che questo fosse qualcosa generato dalla copertura del pacchetto stesso. Grazie – Prometheus

+0

Ho trovato pacchetti che eseguono questa operazione senza una terza parte, ad esempio nose-htmloutput – Prometheus

+0

@OrbiterFleet: si noti che ciò non ospita un'immagine ovunque. Se stai parlando dell'immagine di copertura sulle loro pagine PyPI e GitHub, quella è ancora gestita da coveralls.io. –

0

Ho scritto un pacchetto di generazione di badge Python che produce badge molto visivamente simili ai principali servizi di badge. È altamente flessibile, puoi importarlo e usarlo nel tuo codice Python o eseguirlo dalla riga di comando. È semplice e autonomo.

È possibile impostare l'etichetta e il valore del badge ed è possibile impostare il colore in base alle soglie.Esistono impostazioni predefinite per il successo di pilore, copertura e conduttura, ma puoi creare qualsiasi badge che ti piace.

Ecco un link al progetto github con una documentazione più dettagliata: https://github.com/jongracecox/anybadge

Installare con pip install anybadge

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

Esempio utilizzo della riga di comando:

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