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