Как получить отчет о покрытии из данного пакета с помощью Nose2

Я хотел бы использовать nose2 с плагином покрытия, чтобы получить покрытие пакета Python, но я мне трудно настроить его так, чтобы он охватывал только тот пакет, над которым я работаю. Пакет называется vimhdl и раздел покрытия моего unittest.cfg выглядит так:

[coverage]
coverage = vimhdl

С nose2 результат включает не все файлы из пакета (возможно, из-за сообщения Coverage.py warning: Module vimhdl was previously imported, but not measured., но я не знаю, как это исправить).

Кроме того, при открытии HTML-отчета для данного файла операторы, такие как import logging, и строки документации модулей помечаются как неиспользуемые.

$ nose2 --with-coverage   -vvv
...
----------------------------------------------------------------------
Ran 5 tests in 0.166s

OK
Coverage.py warning: Module vimhdl was previously imported, but not measured.
---------- coverage: platform linux2, python 2.7.10-final-0 ----------
Name                                  Stmts   Miss  Cover
---------------------------------------------------------
python/vimhdl/compilers/__init__.py      95     42    56%
python/vimhdl/compilers/ghdl.py          92     41    55%
python/vimhdl/config_parser.py           74     42    43%
python/vimhdl/project_builder.py        269    164    39%
python/vimhdl/source_file.py            126     51    60%
---------------------------------------------------------
TOTAL                                   656    340    48%

С другой стороны, с nosetests результат включает все файлы, как и ожидалось.

$ nosetests --with-coverage -vvv

Name                           Stmts   Miss  Cover   Missing
------------------------------------------------------------
vimhdl.py                          5      0   100%   
vimhdl/compilers.py               95     11    88%   46-47, 97, 106-108, 131-132, 149-150, 158
vimhdl/compilers/fallback.py      22      7    68%   31-32, 35, 38, 41, 44, 47
vimhdl/compilers/ghdl.py          92     21    77%   91-94, 107-108, 151-172, 182
vimhdl/compilers/msim.py          94     72    23%   49, 52-69, 73-102, 113-124, 128-135, 138-151, 154-159, 163-169, 176-179, 185-190
vimhdl/compilers/xvhdl.py         61     46    25%   38-40, 44-51, 54-76, 87-98, 101-105, 110-126
vimhdl/config.py                  69     46    33%   21-22, 55-77, 81-83, 87-91, 95-105, 109-122, 126-135
vimhdl/config_parser.py           74     25    66%   33-34, 45-46, 50, 53-88, 117, 119, 124, 133
vimhdl/exceptions.py              12      4    67%   21, 24, 28, 31
vimhdl/project_builder.py        269    114    58%   23-24, 61-68, 92, 97, 102, 108, 115-121, 131-134, 139-146, 156, 169-170, 182-185, 205-219, 221, 237-273, 278-313, 332-336, 368-371, 373-376, 380-381, 384-385, 393-394, 400, 419-426, 430-431, 455-456, 462-476
vimhdl/source_file.py            126     25    80%   71, 86-87, 168, 172, 174, 176, 178, 197-198, 203-216, 219
vimhdl/static_check.py           104     88    15%   56-112, 119-132, 139-165, 169-188, 191-197, 200
vimhdl/utils.py                    8      5    38%   24-28
------------------------------------------------------------
TOTAL                           1031    464    55%   

Как настроить плагин покрытия nose2 для покрытия только данного модуля?

Исходный код находится на github по адресу https://github.com/suoto/vim-hdl/tree/unstable, если это поможет.


person suoto    schedule 01.01.2016    source источник
comment
Я нашел обходной путь, который работал для одного тестового файла, используя coverage.py API напрямую, как показано на coverage.py документы. Проблема в том, что это работает только для одного файла; повторение его в другом исходном файле теста не приводит к созданию отчета с объединенными результатами.   -  person suoto    schedule 02.01.2016


Ответы (1)


Самый простой способ контролировать покрытие.py — использовать его для запуска тестов:

coverage run --source=vimhdl -m nose 
person Ned Batchelder    schedule 02.01.2016
comment
Это сработало отлично, спасибо. Я все еще озадачен, почему использование плагина покрытия в Nose2 не работает таким образом. - person suoto; 03.01.2016