Seite 1 von 1

Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 08:06
von jens
In meinem 6809 Emulator hab ich nun mittlerweile echt viel unittests gemacht. Ich frage mich, wie ich raus bekommen kann, welche Code Teile nicht von tests abgedeckt sind.

Wie kann man das machen?

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 08:22
von Hyperion
Such doch mal nach "Code Coverage Tools" für Python; wenn es welche gibt, wäre das das Mittel der Wahl :-)

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 08:43
von jens
Das ist schon mal ein gutes Stichwort...

https://wiki.python.org/moin/CodeCoverage

Ein Tool ist wohl http://nedbatchelder.com/code/coverage/ ... Liefert dann sowas: http://nedbatchelder.com/code/coverage/sample_html/
Bringt mir aber jetzt nix, weil ich möchte ja wissen, welche Teile nicht getestet sind und nicht Statistiken das X% nicht getestet sind ;)


Das scheint das zu liefern: http://www.fiber-space.de/EasyExtend/do ... erage.html


Wahrscheinlich gibt es noch so einiges... Aber was ist aktuelle der "heiße Scheiß" dazu?

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 08:55
von snafu
@jens: ``coverage annotate`` zeigt dir, welche Teile deines Codes bei der Programmausführung betreten werden und welche niemals betreten werden. Beispiel aus der Doku:

Code: Alles auswählen

# A simple function, never called with x==1 

> def h(x): 
      """Silly function."""
-     if 0:   #pragma: no cover
-         pass
>     if x == 1: 
!         a = 1
>     else: 
>         a = 2 

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 10:11
von jens
snafu hat geschrieben:@jens: ``coverage annotate`` zeigt dir, welche Teile deines Codes bei der Programmausführung betreten werden und welche niemals betreten werden. Beispiel aus der Doku:
Welches Paket/Doku meinst du jetzt?

Wie sind die Meinungen zu https://coveralls.io ?
Wobei es da auch zwei Anbindungen gibt:
1. https://github.com/coagulant/coveralls-python
2. https://github.com/z4r/python-coveralls

Welche ist "besser"? Erfahrungen?

django-cms nutzt es. Das Ergebnis eines Datei sieht dann so aus: https://coveralls.io/files/231750231

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 10:15
von BlackJack
Es war coverage.py gemeint: http://nedbatchelder.com/code/coverage/cmd.html (runterscrollen bis zum annotate-Beispiel)

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 12:33
von jens
Ja, cool! Generiert auch schöne HTML Dateien.

Hab es so gemacht:

Code: Alles auswählen

~$ sudo pip2 install coverage

.../path/to/DragonPy$ coverage2 run --source=dragonpy setup.py test
.../path/to/DragonPy$ coverage2 coverage2 html
.../path/to/DragonPy$ firefox htmlcov/index.html

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Donnerstag 3. Juli 2014, 12:37
von jens
Hab versucht das ganze auch bei coveralls.io über travis CI ans rennen zu bekommen, geht aber noch nicht.

Am Ende eines Tests steht:
The command "coverage run --source=dragonpy setup.py test" exited with 0.
after_success
$ coveralls
Submitting coverage to coveralls.io...
Source file is not python dragonpy/MC6809data/CPU6809make_Instructions
Coverage submitted!
Couldn't find a repository matching this job.
'url'
Done. Your build exited with 0.
Siehe: https://travis-ci.org/jedie/DragonPy/builds/29047830

Bei coveralls.io kommt nichts an: https://coveralls.io/r/jedie/DragonPy


Mein configs:

.travis.yml

Code: Alles auswählen

language: python
python:
  - "2.7"
install:
  - pip install coveralls
script:
  coverage run --source=dragonpy setup.py test
after_success:
  coveralls
https://github.com/jedie/DragonPy/blob/ ... travis.yml


.coveralls.yml

Code: Alles auswählen

service_name: travis-pro
repo_token: 1OI4obkPMbvZy6i3ADYYPgxFulDJGOIU7
s. https://github.com/jedie/DragonPy/blob/ ... eralls.yml


Geht das ganze nur wirklich dann, wenn man den bezahl-Account Travis Pro hat?

Re: Welcher code ist nicht von Unittest abgedeckt?!?

Verfasst: Mittwoch 25. Februar 2015, 15:30
von jens
Nun hab ich auch mal coveralls.io ans laufen bekommen. Zwar nicht für das eingeschlafene DragonPy Projekt, aber für PyLucid: https://coveralls.io/r/jedie/PyLucid

Im Grunde sind nur zwei Dateien notwendig:
https://github.com/jedie/PyLucid/blob/d ... travis.yml
https://github.com/jedie/PyLucid/blob/d ... coveragerc

travis-ci.org schickt beim erfolgreichen Testdurchlauf die Daten nach coveralls.io
Sieht in den Logs dann so aus:
The command "coverage run ./setup.py test" exited with 0.
$ coveralls
Submitting coverage to coveralls.io...
Coverage submitted!
Job #13.1
https://coveralls.io/jobs/4621174