LINUX.ORG.RU

coverage только своих модулей, а не всех системных.

 , , , ,


0

1

Есть программа на python'е, есть модульные (unit) тесты к ней (nose). Хочу измерить покрытие тестами кода. Проблема в том, что запуск nosetests --with-coverage пробегает по тестам так же всех import'нутых модулей, а не только моих. Учитывая что код какого-нибудь numpy или pandas во много раз больше моего я получаю, во-первых, что coverage долго меряется, во-вторых, что даже печальнее, что вместо покрытия моего кода я меряю покрытие pandas'а, всегда получаю 21%.

Как померять покрытие только своего кода тестами? Только того кода который есть в некоторой директории, но не того который добавляется import'ами.

Я для проверки даже написал модуль с двумя тривиальными функциями уровня hello_world и один тест к этому модулю. Если нет import pandas, то nosetests --with-coverage говорит 44%, а если есть import pandas и вызов одной функции из него, то проверяется покрытие в pandas'е и numpy и отвечает 21%.

★★★★★
Ответ на: комментарий от baverman

Ещё варианты?

Из некоторых соображений у меня в корневой директории нет файла __init__.py, потому считается, что у меня несколько package'ей. Можно их перечислить через запятую, но нельзя ли как-то ещё указать «в этой директории смотри, в других директориях не смотри»?

Camel ★★★★★
() автор топика
Ответ на: комментарий от baverman

setup.py решает.

--cover-package

package'ем считается директория в которой есть __init__.py, либо то для чего есть setup.py. Запустить nosetests --with-coverage --cover-package=<имя package'а которое у меня стоит в setup.py> оказалось достаточно.

Camel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.