У меня есть очень большой проект Python с очень большим набором тестов. Недавно мы решили определить количество качества нашего тестового покрытия.
Я ищу инструмент для автоматизации поколения отчета о тестовом покрытии. Идеально я хотел бы иметь привлекательный, легкий прочитать отчеты, но я соглашусь на менее привлекательные отчеты, если я мог бы заставить его работать быстро.
Я попробовал Нос, который не достаточно хорош: Это является несовместимым с, распределяют / функция пакета пространства имен setuptool. К сожалению, покрытие носа никогда не будет работать на нас, так как мы делаем богатое использование этой функции. Это - реальный позор, потому что Нос, кажется, работает действительно приятно в Гудзоне (главным образом)
Как альтернатива, я услышал, что существует способ сделать анализ покрытия Python в Eclipse, но я не совсем вниз заблокировал идеальную технику.
Любые приветствующиеся предложения!
К вашему сведению мы используем Python 2.4.4 на Windows XP 32bit
Вы пробовали использовать extension.py ? Он лежит в основе «прикрытия носа», но при необходимости может отлично применяться за пределами носа.
Если вы запускаете тесты с (гипотетически) python run_my_tests.py
, то вы можете измерить покрытие с помощью покрытия run_my_tests.py
, а затем получить отчеты HTML с покрытием html
.
Судя по вашему описанию, я не уверен, какая у вас проблема с носом, особенно проблема с носом или проблема с покрытием .py. Расскажите подробнее, и я уверен, что мы сможем их проработать.
Нед уже упоминал свой отличный модуль coverage.py.
Если проблема, с которой вы столкнулись, связана с носом, возможно, вы захотите рассмотреть возможность использования другой программы для запуска тестов. Я использовал py.test вместе с плагином pytest_coverage, который позволяет генерировать статистику покрытия. В нем также есть плагин pytest_nose, который поможет вам в миграции.
Однако я не понимаю, с какой именно проблемой вы столкнулись. Можете ли вы немного подробнее рассказать о "функции распространения / пакета пространства имен setuptools", которую вы упомянули? Мне интересно узнать, в чем проблема.