2010-06-25 7 views
6

Ich habe ein sehr großes Python-Projekt mit einer sehr großen Test-Suite. Vor kurzem haben wir beschlossen, die Qualität unserer Testabdeckung zu quantifizieren.Wie kann ich sicherstellen, gute Test-Coverage von meinem großen Python-Proejct

Ich bin auf der Suche nach einem Tool zur Automatisierung der Testabdeckung Berichterstellung. Idealerweise hätte ich gerne attraktive, leicht lesbare Berichte, aber ich würde mich mit weniger attraktiven Berichten begnügen, wenn ich es schnell zum Laufen bringen könnte.

Ich habe versucht, Nase, die nicht gut genug ist: Es ist inkompatibel mit distribute/setuptools Namespace-Paket-Funktion. Leider wird die Nasenabdeckung für uns nie funktionieren, da wir diese Funktion reichlich nutzen. Das ist eine echte Schande, denn Nose scheint in Hudson wirklich gut zu funktionieren (meistens)

Als Alternative habe ich gehört, dass es eine Möglichkeit gibt, eine Python-Coverage-Analyse in Eclipse durchzuführen, aber ich habe mich nicht ganz ausgesperrt die perfekte Technik.

Alle Vorschläge willkommen!

FYI verwenden wir Python 2.4.4 auf Windows XP 32-Bit-

+0

Ich habe versucht, dieses Problem zu reproduzieren und konnte nicht. Salim, wenn du Hilfe brauchst, sag mir Bescheid. –

Antwort

4

Haben Sie versucht coverage.py mit? Es liegt der "Nasenabdeckung" zugrunde, kann aber bei Bedarf auch außerhalb der Nase perfekt ausgeführt werden.

Wenn Sie Ihre Tests mit (hypothetisch) python run_my_tests.py ausführen, können Sie Abdeckung mit coverage run run_my_tests.py messen, dann erhalten Sie HTML-Berichte mit coverage html.

Von Ihrer Beschreibung her bin ich mir nicht sicher, welches Problem Sie mit der Nase hatten, insbesondere, ob es sich um ein Nasenproblem oder um ein Coverage.py-Problem handelte. Geben Sie einige weitere Details an, und ich bin sicher, dass wir sie durcharbeiten können.

1

Ned hat bereits sein exzellentes coverage.py-Modul erwähnt.

Wenn das Problem, das Sie haben, etwas nasenspezifisch ist, sollten Sie einen anderen Test-Runner in Betracht ziehen. Ich habe py.test zusammen mit dem pytest_coverage Plugin verwendet, mit dem Sie Deckungsstatistiken erstellen können. Es hat auch ein pytest_nose Plugin, um Ihnen bei der Migration zu helfen.

Allerdings verstehe ich nicht genau, was das Problem Sie konfrontiert ist. Können Sie etwas über die von Ihnen erwähnte Namespace-Paketfunktion "distribute/setuptools" ausführen? Ich bin gespannt, was das Problem ist.

+0

Wir verwenden die Funktion namespace packages von setuptools, die es mehreren Eizellen ermöglicht, Zeug in einem signle-Namespace bereitzustellen, also beispielsweise wenn myproduct_foo_1.0.egg den Namespace myproduct und myproduct.foo bereitstellt und myproduct_bar_1.0.egg den Namespace bereitstellt myproduct.bar. Wenn ich versuche, eine Coverage-Analyse für mein Produkt durchzuführen, muss das Coverage-Tool erkennen, welches der beiden Eier tatsächlich die Quelle jedes relevanten Moduls enthält. Im Moment scheint nose/cover.py es falsch zu machen. –

+1

Salim, ich würde gerne coverage.py reparieren, um das richtig zu machen. Hast du Probe, die ich selbst ausprobieren kann? –

+1

BTW: Ich habe ein Coverage.py-Ticket für dieses Problem hinzugefügt: http://bitbucket.org/ned/coveragepy/issue/75/namespace-packages-break-coveragepys-ability-to-find-source –