2015-03-27 11 views
5

Używam zasięgu Pythona do testowania moich aplikacji. Patrząc na innych deweloperów na GitHub widzę, że mają małą plakietkę, która pokazuje procent pokrycia. Wykorzystując zasięg, w jaki sposób mogę wygenerować te plakietki?Znaczniki zasięgu Pythona, jak je zdobyć?

Znaczek zasięgu to ten, na który patrzę poniżej.

badges

Aktualizacja: Są to pakiety, które generują odznaczenia tj nosa htmloutput! Cool

+1

Nie odważaj się na nie klikać. – Carsten

+0

Te plakietki zwykle zawierają link do określonej usługi, która je zapewnia. Każda odznaka jest zwykle dostarczana przez inną usługę. –

+0

@Carsten Po kliknięciu zobaczyłem różne, przechodzące do wielu różnych usług zewnętrznych. Ale chciałem naprawdę wiedzieć, czy to było coś, co faktycznie powstało w wyniku pokrycia pakietu, i że podoba mi się sprawozdanie z zakresu html, które można uwzględnić. – Prometheus

Odpowiedz

4

Jeśli chcesz wygenerować odznaczenia na własną rękę, można spróbować załadować całkowity procent pokrycia a następnie utworzyć obraz, cos takiego:

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

Niesamowita odpowiedź! Dokładnie to, czego potrzebowałem! – Prometheus

+2

Jest o wiele łatwiejszy sposób niż pisanie tego programu: użyj [shields.io] (http://shields.io). –

+0

@NedBatchelder Yeah Odkryłem to również dzisiaj. Nadal myślę o stworzeniu modułu do tworzenia tych odznak. – Carsten

6

Możesz kliknąć na tych znaczkach na, a to zazwyczaj przeniesie Cię do usługi, która je zapewnia.

Pokrycie odznaka jest przez https://coveralls.io/:

Kombinezon to serwis internetowy, aby pomóc śledzić pokrycia kodu w czasie, i upewnić się, że wszystkie nowe hasło jest w pełni pokryte.

Jest tylko jeden warunek:

  • kod musi być utrzymywana na GitHub

Po zalogowaniu się i obejmowały wymaganej konfiguracji i integracji lub opakowań po rozwijających się, otrzymujesz adres URL obrazu, który należy umieścić w dokumentacji projektu; projekt python-coveralls posiada:

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

w ich README na przykład, co czyni jako:

1

+0

Dziękuję za odpowiedź, myślałem, że to coś, co zostało wygenerowane przez samo pokrycie pakietu. Dzięki – Prometheus

+0

Znalazłem pakiety, które robią to bez 3rd party tj. Nose-htmloutput – Prometheus

+0

@ OrbiterFleet: zauważ, że to nie hostuje obrazu w dowolnym miejscu. Jeśli mówisz o obrazie zasięgu na swoich stronach PyPI i GitHub, to nadal jest to obsługiwane przez coveralls.io. –

0

Napisałem pakiet generujący odznakę Pythona, który produkuje identyfikatory bardzo podobne wizualnie do głównych usług odznak. Jest bardzo elastyczny, można go importować i używać w kodzie Pythona lub uruchamiać z wiersza poleceń. Jest prosty i samowystarczalny.

Można ustawić etykietę i wartość znacznika, a także ustawić kolor na podstawie wartości progowych.Dostępne są fabrycznie skonfigurowane ustawienia pylint, zasięgu i potoków, ale możesz utworzyć dowolną plakietkę.

Tu jest link do projektu github z bardziej szczegółowej dokumentacji: https://github.com/jongracecox/anybadge

Instalacja z pip install anybadge

przykładu kodu Pythona:

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

Przykład użycia linii komend:

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