作弊并获得100%的测试覆盖率
fullcoverage的Python项目详细描述
警告
如果这还不够清楚:这个模块是个笑话!不要使用它。这并不危险,只是没用。
如今,每一个时髦的项目都有一系列闪亮的小徽章。它们看起来很棒,但很难买到。本模块旨在帮助您轻松获得100%测试覆盖率徽章。
有什么新消息?
下载并安装
来源:
安装(如果您不想破坏您的分发安装系统,请在虚拟机中安装):
python3 setup.py install
来自PIP:
pip install fullcoverage
又快又脏的debian(还有ubuntu?)套餐
这需要安装stdeb:
python3 setup.py --command-packages=stdeb.command bdist_deb sudo dpkg -i deb_dist/fullcoverage-<VERSION>_all.deb
如何
假设您希望完全覆盖模块foobar。
安装全覆盖:
pip install fullcoverage
启用此插件。也就是说,在foobar的.coveragerc文件中,有以下行:
[run] plugins = fullcoverage.plugin
可选,如果要将测试报告限制在模块中,可以在同一个.coveragerc文件中添加:
[fullcoverage.plugin] source = foobar
如果已经有了导入所有foobar子模块的测试,就这样了。否则,在测试的某个地方,让以下行导入模块中的所有内容:
import foobar import fullcoverage fullcoverage.import_all(foobar)
就这样!现在您可以运行测试:
coverage run --source foobar -m unittest coverage report --fail-under=100
错误和限制
- 这不适用于doctest。请随意send a patch。
- 这只适用于Python3.5。请随意send a patch。
- 即使测试覆盖了模块的100%,它仍然可能包含错误。
常见问题解答
- 这不危险吗?你是否每运行一个模块的每一行就可以获得100%的测试覆盖率?如果运行一行shutil.rmtree('/'),会怎么样?
这个插件不运行随机的代码行。它导入要覆盖的每个插件,但它欺骗了coverage,使其认为它们已经过了彻底的测试,而没有测试任何东西。如果您的模块可以安全地导入,则可以使用fullcoverage。如果您的模块无法安全导入,请修复您的模块。
- 如果你的插件很好,为什么你不炫耀一下那些100%coverage徽章呢?
好吧,fullcoverage托管在一个Gitlab instance上,这个does not provide those badges yet。但是这个插件的实现是为了测试自己,以及it is thoroughly covered by tests。