2012-03-08 24 views
20

Czy istnieje sposób na wygenerowanie raportu zawierającego zasięg kodu w moim zestawie testów django dla szablonów mojej witryny? Mam już pokrycie dla Pythona, ale pokrycie szablonów identyfikujących martwy lub nieprzetestowany kod szablonu byłoby niesamowite.Pokrycie testowe szablonu Django

Aby wyjaśnić: Chcę znaleźć linie w moich szablonach, które nigdy nie są wykonywane lub emitowane podczas mojego zestawu testów.

+0

django-debug-toolbar [łapie informacje o szablonie] (https://github.com/django-debug-toolbar/django-debug-toolbar/blob/master/debug_toolbar/panels/template.py) może to zainspiruje ty. – jpic

Odpowiedz

1

Szablony nie przechowują żadnych informacji o numerze linii, takich jak kod źródłowy python. Najlepsze, co można zrobić, to małpa łatać obiekt NodeList, aby zarejestrować ile razy każdy węzeł został oceniony, a następnie ponownie renderować szablony w specjalnym trybie, który pokaże, które węzły są oceniane.

EDYCJA: Zostałem poprawiony.

Szablony DO przechowują informacje o numerze linii, ale tylko dla początku tokena. TO ZNACZY. jeśli masz zasięg tekstowy w wielu liniach, musisz sam sobie z tym poradzić. Istnieje pewien interesujący kod w django.templates.debug, który może być przydatny do skonstruowania takiego reportera pokrycia.

+1

Nie otrzymujesz numeru wiersza w błędach szablonu? – jterrace

0

Nie sądzę, że możesz uzyskać informacje o pokryciu z szablonów, ale możesz dowiedzieć się, które szablony są renderowane, łącząc się z template_rendered signal. Twój odbiornik zapisuje nazwy renderowanych szablonów.

Następnie można łatwo sprawdzić, które szablony są , a nie renderowane za pomocą polecenia find.

Powiązane problemy