2010-06-25 11 views
6

Mam bardzo duży projekt Pythona z bardzo dużym zestawem testów. Niedawno podjęliśmy decyzję o ilościowym określeniu jakości naszego testu.Jak mogę zapewnić dobre pokrycie testowe mojego dużego projektu Pythona

Poszukuję narzędzia do automatyzacji generowania raportu pokrycia testowego. Idealnie chciałabym mieć atrakcyjne, łatwe do odczytania raporty, ale zadowalałbym się mniej atrakcyjnymi raportami, gdybym mógł szybko to zrobić.

Próbowałem Nose, co nie jest wystarczająco dobre: ​​Jest niezgodne z funkcją pakietu przestrzeni nazw distribute/setuptools. Niestety zasięg nosa nigdy nie zadziała, ponieważ korzystamy z tej funkcji w dużej ilości. To wstyd, ponieważ Nose wydaje się działać naprawdę dobrze w Hudson (głównie)

Jako alternatywę, słyszałem, że istnieje sposób, aby wykonać analizę pokrycia Pythona w Eclipse, ale nie całkiem zablokowałem doskonała technika.

Wszelkie sugestie mile widziane!

FYI używamy Python 2.4.4 na Windows XP 32bit

+0

Próbowałem odtworzyć ten problem i nie mogłem. Salim, jeśli potrzebujesz pomocy, napisz do mnie. –

Odpowiedz

4

Czy próbowali za pomocą coverage.py? Opiera się on na "pokryciu nosem", ale jeśli jest taka potrzeba, może być doskonale prowadzony poza nosem.

Jeśli przeprowadzasz testy z (hipotetycznie) python run_my_tests.py, możesz zmierzyć zasięg za pomocą coverage run run_my_tests.py, a następnie pobrać raporty HTML z coverage html.

Z twojego opisu, nie jestem pewien, jaki problem miałeś z nosem, szczególnie czy to był problem z nosem, czy problem coverage.py. Podaj więcej szczegółów i jestem pewien, że możemy przez nie przejść.

1

Firma Ned wspomniała już o swoim doskonałym module coverage.py.

Jeśli masz problem, który jest specyficzny dla nosa, możesz rozważyć użycie innego testera. Użyłem py.test wraz z wtyczką pytest_coverage, która pozwala generować statystyki zasięgu. Posiada również wtyczkę pytest_nose, która ułatwia migrację.

Jednak nie rozumiem dokładnie, na czym polega problem. Czy możesz rozwinąć trochę w funkcji pakietu "distribute/setuptools 'namespace", o której wspomniałeś? Jestem ciekawy, jaki jest problem.

+0

Używamy funkcji paczek nazw w setuptools, która pozwala wielu jaja dostarczać rzeczy w przestrzeni nazw signle, więc na przykład, jeśli myproduct_foo_1.0.egg może dostarczyć przestrzeni nazw myproduct i myproduct.foo, a myproduct_bar_1.0.egg zapewni przestrzeń nazw myproduct.bar. Kiedy próbuję wykonać analizę pokrycia na myproduct, narzędzie pokrycia musi wykryć, które z dwóch jaj rzeczywiście zawiera źródło każdego odpowiedniego modułu. W tej chwili nose/cover.py wydaje się robić to źle. –

+1

Salim, chciałbym poprawić coverage.py, żeby to naprawić. Czy masz próbkę, którą mogę sam wypróbować? –

+1

BTW: Dodałem bilet coverage.py dla tego problemu: http://bitbucket.org/ned/coveragepy/issue/75/namespace-packages-break-coveragepys-ability-to-find-source –

Powiązane problemy