Почему тесты носа говорят --with-coverage не вариант?

Я использую носовые тесты для автоматического обнаружения и запуска своих юнит-тестов. Я также хотел бы, чтобы он генерировал отчеты о покрытии.

Когда я запускаю тесты с помощью следующей команды, все работает нормально

nosetests .

Я посмотрел в Интернете, что для создания покрытия, у Nousetests есть аргумент командной строки --with-coverage. Я также дважды проверил, что эта команда существует, используя nosetests --help. Однако всякий раз, когда я запускаю следующую команду, я получаю следующий вывод

nosetests --with-coverage .
Usage: nosetests [options]

nosetests: error: no such option: --with-coverage

Я дважды проверил, установлен ли плагин покрытия, запустив

nosetests --plugins

покрытие отображается в списке вместе с кучей других плагинов.

Я также знаю, что у меня установлено покрытие, потому что я могу вручную запустить сбор данных о покрытии, используя что-то вроде:

coverage run test.py

Я неправильно использую параметр --with-coverage? Или есть что-то еще, что мне не хватает?

Заранее спасибо.


person rhololkeolke    schedule 09.11.2012    source источник
comment
Попробуйте использовать файл конфигурации вместо параметров командной строки.   -  person Janne Karila    schedule 09.11.2012
comment
@Janne Karila, похоже, не нравится это в командной строке или в файле конфигурации. Я собираюсь пройтись по источнику.   -  person lsh    schedule 15.03.2016


Ответы (3)


У меня никогда не работали параметры командной строки. Я сделал то, что предложил Janne Karila, и создал файл setup.cfg в главном каталоге моих проектов. Когда у меня был этот файл, я мог просто запустить тесты носа без аргументов, и все заработало.

Одна проблема, с которой я столкнулся при попытке создать свой документ, заключалась в том, что я не мог понять, какие параметры разрешены в конфигурации. Но оказывается, что любая из перечисленных здесь команд https://nose.readthedocs.org/en/latest/usage.html#options. Просто уберите двойные дефисы перед командой.

Для справки мой текущий файл конфигурации

[nosetests]
verbosity=1
detailed-errors=1
with-coverage=1
cover-erase=1
cover-package=application
cover-html=1
cover-html-dir=htmlcov
where=tests

В этом конфигурационном файле указано использовать покрытие, стереть покрытие предыдущего запуска, сообщать только о файлах в пакете приложения и выводить отчет в формате html в каталог htmlcov.

Надеюсь, это поможет кому-то еще в будущем.

person rhololkeolke    schedule 10.11.2012

Ваш синтаксис правильный. Это может быть проблема с вашей средой, дважды проверьте свою среду Python и где у вас установлены нос и покрытие. В качестве проверки работоспособности вы можете быстро настроить новую виртуальную среду, установить нос и запустить команду с параметром покрытия.

person Brian Cajes    schedule 09.11.2012

По состоянию на nose 1.3.7самая последняя версия, доступная в Pypy — эта команда не существует:

https://github.com/nose-devs/nose/blob/release_1.3.7/nose/plugins/cover.py

Похоже, что документация создается из ветки master проекта, в которой действительно доступны следующие параметры:

https://github.com/nose-devs/nose/blob/master/nose/plugins/cover.py

Что вы можете сделать, так это установить nose из ветки master следующим образом:

pip install git+https://github.com/nose-devs/nose@master --upgrade

Он скажет, что только что установил 1.3.7, но это только потому, что версия еще не была изменена в файле проекта setup.py: https://github.com/nose-devs/nose/blob/master/setup.py#L4

Помните, что вы только что установили невыпущенную версию nose, могут быть и другие ошибки.

person lsh    schedule 15.03.2016