用于覆盖率报告的nose插件,包括子进程和多进程
nose-cov的Python项目详细描述
此插件生成覆盖率报告。它还支持子流程的覆盖
应提供覆盖包提供的所有功能,通过鼻罩或 通过覆盖的配置文件。
安装
使用pip安装:
pip install nose-cov
注意
确保使用pip而不是easy_install,因为后者不能正确安装 子流程测量所需的init_cov_core.pth文件。
卸载
使用pip进行卸载:
pip uninstall nose-cov pip uninstall cov-core
注意
确保手动删除站点包目录中的init_cov_core.pth文件。
此文件在站点初始化期间启动子进程的覆盖范围集合(如果适用) 在python启动时
用法
以下将报告主流程及其所有子流程的组合覆盖范围:
nosetests --with-cov --cov myproj tests/
显示终端报告:
---------- coverage: platform linux2, python 2.6.5-final-0 ----------- Name Stmts Miss Cover ---------------------------------------- myproj/__init__ 2 0 100% myproj/myproj 257 13 95% myproj/feature4286 94 9 90% ---------------------------------------- TOTAL 353 22 94% ----------------------------------------------------------------------
报告
可以为单个测试运行生成报告的任意组合。
可用的报告包括终端(显示或不显示缺少行号)、HTML、XML和 带注释的源代码。
不带行号的终端报告(默认值):
nosetests --with-cov --cov-report term --cov myproj tests/ ---------- coverage: platform linux2, python 2.6.5-final-0 ----------- Name Stmts Miss Cover ---------------------------------------- myproj/__init__ 2 0 100% myproj/myproj 257 13 95% myproj/feature4286 94 9 90% ---------------------------------------- TOTAL 353 22 94% ----------------------------------------------------------------------
带有行号的终端报告:
nosetests --with-cov --cov-report term-missing --cov myproj tests/ ---------- coverage: platform linux2, python 2.6.5-final-0 ----------- Name Stmts Miss Cover Missing -------------------------------------------------- myproj/__init__ 2 0 100% myproj/myproj 257 13 95% 24-26, 99, 149, 233-236, 297-298, 369-370 myproj/feature4286 94 9 90% 37, 40, 183-188, 197 -------------------------------------------------- TOTAL 353 22 94% ----------------------------------------------------------------------
其余三个报告输出到文件,而不在终端上显示任何内容(对于 当输出到持续集成服务器时:
nosetests --with-cov --cov-report html --cov-report xml --cov-report annotate --cov myproj tests/
覆盖率数据文件
数据文件在测试开始时被删除,以确保每次测试运行都有干净的数据。
数据文件留在测试结束时,这样就可以使用普通的覆盖工具 检查一下
覆盖率配置文件
这个插件提供了一个干净的最小的命令行选项集,添加到notests中。为了 进一步控制覆盖使用覆盖配置文件。
例如,如果测试包含在正在测量的目录树中,则测试可以是 如果需要,可通过使用.coveragerc文件并设置“忽略”选项来排除:
nosetests --cov-config .coveragerc --cov myproj myproj/tests/
.coveragerc文件包含文件globs:
[run] omit = tests/*
有关详细信息,请参阅coverage config file文档
注意,这个插件控制一些选项,并且在配置文件中设置选项将没有 效果。其中包括指定要测量的源(源选项)和所有数据文件处理 (数据文件和并行选项)。
限制
对于子流程度量,环境变量必须使其从主流程到 子流程。子进程使用的python必须安装nose cov。子进程必须 进行正常的站点初始化,以便能够检测到环境变量并覆盖 起动。
nose多进程插件
nose cov插件部分地与nose多进程插件一起工作。
nose多进程插件没有与其子进程连接,因此nose cov插件具有覆盖率 已测量但无法合并覆盖率结果并报告它们。
使用cov插件和多进程插件一起运行测试,注意覆盖率报告 此命令将不正确:
nosetests --with-cov --processes=4 tests/
之后将有主nose进程和每个子进程的覆盖率数据文件:
.coverage .coverage.hostname.7323.198266 .coverage.hostname.7339.177156 .coverage.hostname.7358.543616 .coverage.hostname.7393.997428
告诉Coverage将覆盖率结果合并到一个覆盖率数据文件中:
coverage combine
告诉覆盖范围报告:
coverage report
致谢
虽然这个插件是从头开始构建的,但它受到所做工作的影响 Pytest Coverage(Ross Lawley,James Mills,Holger Krekel)和Nose Coverage(Jason Pellerin)上 其他覆盖插件。
Ned Batchelder的覆盖率及其将覆盖率并行运行的结果。
Holger Krekel for Pytest及其分布式测试支持。
杰森·佩林的鼻子。
unittest2的MichaelFoord
毫无疑问,其他人也为这些工具做出了贡献。