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?
Welcher code ist nicht von Unittest abgedeckt?!?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Such doch mal nach "Code Coverage Tools" für Python; wenn es welche gibt, wäre das das Mittel der Wahl
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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?
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?
@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
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Welches Paket/Doku meinst du jetzt?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:
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
Es war coverage.py gemeint: http://nedbatchelder.com/code/coverage/cmd.html (runterscrollen bis zum annotate-Beispiel)
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ja, cool! Generiert auch schöne HTML Dateien.
Hab es so gemacht:
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
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab versucht das ganze auch bei coveralls.io über travis CI ans rennen zu bekommen, geht aber noch nicht.
Am Ende eines Tests steht:
Bei coveralls.io kommt nichts an: https://coveralls.io/r/jedie/DragonPy
Mein configs:
.travis.yml
https://github.com/jedie/DragonPy/blob/ ... travis.yml
.coveralls.yml
s. https://github.com/jedie/DragonPy/blob/ ... eralls.yml
Geht das ganze nur wirklich dann, wenn man den bezahl-Account Travis Pro hat?
Am Ende eines Tests steht:
Siehe: https://travis-ci.org/jedie/DragonPy/builds/29047830The 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.
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
.coveralls.yml
Code: Alles auswählen
service_name: travis-pro
repo_token: 1OI4obkPMbvZy6i3ADYYPgxFulDJGOIU7
Geht das ganze nur wirklich dann, wenn man den bezahl-Account Travis Pro hat?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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:
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