Python 3.x 无法获取丢失的行&;鼻内分支2
我试图让我的测试报告丢失的行和分支。我已经将nose2和coverage配置为生成行和分支覆盖,并且据我所知,我已经正确地设置了coverage配置,以提供缺少的行和分支。然而,当我在nose2下运行时,我不能得到覆盖率来给我缺少的列,但如果我直接运行它,我可以Python 3.x 无法获取丢失的行&;鼻内分支2,python-3.x,nose2,Python 3.x,Nose2,我试图让我的测试报告丢失的行和分支。我已经将nose2和coverage配置为生成行和分支覆盖,并且据我所知,我已经正确地设置了coverage配置,以提供缺少的行和分支。然而,当我在nose2下运行时,我不能得到覆盖率来给我缺少的列,但如果我直接运行它,我可以 考虑我的项目目录中的以下设置 my_module/ __init__.py main.py tests/ test_a_thing.py unittest.cfg .coveragerc 保险范围的内容 [r
考虑我的项目目录中的以下设置
my_module/
__init__.py
main.py
tests/
test_a_thing.py
unittest.cfg
.coveragerc
保险范围的内容
[run]
branch = True
[report]
show_missing = True
unittest.cfg的内容
[coverage]
always-on = True
coverage = my_module
coverage-config = .coveragerc
nose2命令的输出
(example_venv) andy@batman[11:30:53]:/space/test_example$ python -m nose2 -c unittest.cfg --no-user-config
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
----------- coverage: platform linux, python 3.5.2-final-0 -----------
Name Stmts Miss Branch BrPart Cover
---------------------------------------------------------
my_module/__init__.py 0 0 0 0 100%
my_module/main.py 4 1 2 1 67%
---------------------------------------------------------
TOTAL 4 1 2 1 67%
如您所见,它给了我分支
封面,但没有告诉我缺少的分支
如果我只是运行覆盖率报告
(在运行nose后留下的生成的覆盖率
文件上)
你可以看到保险公司给了我缺失的分支
当在
nose2
下运行时,我可以看出coverage
正在拾取.coveragerc
,因为如果我删除.coveragerc
中[run]
部分下的branch=True
行,那么在nose
下运行时,分支覆盖率统计数据将从报告中消失
我是否遗漏了我应该做的额外工作,以便在
nose2
下运行时将此show_missing
config传递到coverage
已安装的版本
cov-core==1.15.0
coverage==4.3.4
nose2==0.6.5
tl;dr-必须为
nose2
添加coverage report=term missing
到unittest.cfg
中的[coverage]
部分(或其他--config[config],-c[config]
文件)。为了使Cov核心
通过show_missing=True
到coverage
详细解释: 在命令行上运行
coverage report
时,show_missing
作为None
传递到coverage.coverage()
*中,除非在命令行参数中重写
但是nos2
使用cov-core
,它将show\u missing
传递给cov\u-core.CovController.summary()
中的cover.cover()
*作为True
或False
。基于以下逻辑:
if 'term' in self.cov_report or 'term-missing' in self.cov_report:
show_missing = 'term-missing' in self.cov_report
self.cov.report(show_missing=show_missing, ignore_errors=True, file=stream)
cov_报告
是在nos2
中设置的覆盖率报告
配置
这是我的困惑,因为我试图使用coverage
的配置来生成缺少的行/分支(在向term报告时,有一个额外的标记用于show\u missing
),而Cov Core
将它们视为单独的报告(报告术语
以获得普通覆盖,或术语缺失
以获得普通覆盖+缺失行)
因此,不要让自己被这一点覆盖行为所困扰,因为当大多数其他位(包括/排除一个分支覆盖)仍然由覆盖
的配置驱动时,Cov核心决定覆盖
*coverage.coverage()是一个向后兼容性调整,实际上是coverage.control.coverage()的导入(在coverage/_init__.py中)
if 'term' in self.cov_report or 'term-missing' in self.cov_report:
show_missing = 'term-missing' in self.cov_report
self.cov.report(show_missing=show_missing, ignore_errors=True, file=stream)