包覆盖率
Sublime Text的单元测试和代码覆盖率测量包
详细
安装
- 总计 6K
- Win 5K
- Mac 833
- Linux 291
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | 6月22日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 5 | 6 | 1 | 1 | 1 | 5 | 1 | 0 | 2 | 4 | 4 | 4 | 1 | 2 | 2 | 1 | 2 | 1 | 0 | 4 | 1 | 3 | 1 | 0 | 4 | 0 | 0 | 0 | 2 |
Mac | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
自述文件
包覆盖率
运行测试并报告测试覆盖率的Sublime Text包。
使用以下Python包,它们将通过Package Control依赖自动安装到Sublime Text中
- unittest
- coverage
- sqlite3
任何包含dev/tests.py
的包都可以用此包进行测试。可以通过该包创建并填充的SQLite数据库将来自多个机器和操作系统的覆盖率数据合并在一起。使用像Dropbox这样的解决方案来存储覆盖率数据库,可以实现无痛苦的覆盖率聚合和报告。
目录
安装
- 安装Package Control
- 从命令面板运行Package Control: Install Package命令
- 输入包覆盖率并选择包
设置
Package Coverage力求保持事情简单。它使用unittest
模块来查找在包目录dev/tests.py
中定义的所有测试类。
唯一的配置是您想要存储跟踪覆盖率结果的SQLite数据库的位置。最方便的选项之一是将它存储在Dropbox或Google Drive文件夹中,该文件夹可以在机器之间自动同步。
创建dev
目录
在您的包目录根目录下,创建一个名为dev/
的子目录。在dev/
文件夹内部,创建一个名为__init__.py
的文件,将dev/
目录变为一个包。
在dev/tests.py
中编写测试
dev/tests.py
文件应包含一个或多个unittest.TestCase
类。由于dev
是一个包,您可以在其他文件中创建测试类,然后使用相对导入将测试类导入到dev/tests.py
中。
创建dev/reloader.py
对于Sublime Text包的迭代式开发,有必要确保在Sublime Text的Python解释器中运行最新的Python代码版本。
默认情况下,Sublime Text会自动重新加载任何位于包目录根部的以.py
结尾的文件。虽然这种方法对于简单的包来说适用,但对于更复杂的包来说通常是不够的。
为了处理更复杂的包,创建一个名为dev/reloader.py
的文件,并将其粘贴以下模板内容到其中
# coding: utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
import sys
# The name of the package
pkg_name = 'My Package'
# A list of all python files in subdirectories, listed in their dependency order
pkg_files = [
'subdir._types',
'subdir._osx',
'subdir._linux',
'subdir._win',
'subdir',
]
if sys.version_info >= (3,):
from imp import reload
prefix = pkg_name + '.'
else:
prefix = ''
for pkg_file in pkg_files:
pkg_file_path = prefix + pkg_file
if pkg_file_path in sys.modules:
reload(sys.modules[pkg_file_path])
使用
通过命令面板,Package Coverage提供了以下命令
运行测试
该命令会运行dev/tests.py
中包含的测试,并将输出结果显示在Sublime Text底部的输出面板中。
使用快速面板提示用户选择要测试的包。测试将在后台线程中运行,这意味着无法访问sublime
API。只有位于Packages/
文件夹且文件名为dev/tests.py
的包会被显示。
在UI线程中运行测试
与运行测试相同,区别在于测试是在UI线程中运行的,允许访问sublime
API。
按名称运行测试
与运行测试相同,区别在于用户可以输入正则表达式来按名称过滤要运行的测试。
按名称在UI线程中运行测试
与在UI线程中运行测试相同,区别在于用户可以输入正则表达式来按名称过滤要运行的测试。
测量覆盖率
该命令运行dev/tests.py
中的测试并测量代码覆盖率。如果已设置数据库路径,则将结果保存到SQLite覆盖率数据库中。
使用快速面板提示用户选择要测试的包。测试将在后台线程中运行,这意味着无法访问sublime
API。只有位于Packages/
文件夹且文件名为dev/tests.py
的包会被显示。
在UI线程中测量覆盖率
与测量覆盖率相同,区别在于测试是在UI线程中运行的,允许访问sublime
API。
使用HTML报告测量覆盖率
与使用HTML报告测量覆盖率相同,区别在于除了输出面板外,还会生成并打开HTML报告,以便用户查看。
在UI线程中使用HTML报告测量覆盖率
与使用HTML报告测量覆盖率相同,区别在于测试是在UI线程中运行的,允许访问sublime
API。
设置数据库路径
提示用户输入保存覆盖率数据库的完整路径。这是一个用于从覆盖率结果生成HTML报告的SQLite数据库。
通过在同步文件系统(如Dropbox或Google Drive)中保存数据库,可以在生成HTML报告时使用来自不同操作系统的结果。
如果在一个打开的Sublime Text项目中设置了数据库路径,则数据库设置将被设置为项目文件中的项目设置。否则,数据库设置将是全局编辑器设置,并保存在Packages/User/Package Coverage.sublime-settings
中。
只有完全干净的git仓库且无更改的测试结果会被保存到覆盖率数据库中。
显示报告
使用快速面板提示用户从覆盖率数据库中选择一个包含覆盖率结果的包。选择一个包后,用户将看到一个包含覆盖率结果的提交列表。选择一个提交将编译该提交的不同测试运行结果,生成HTML报告并在用户的默认Web浏览器中打开。
生成的报告放在dev/coverage_reports/
目录中。建议使用.gitignore
或.hgignore
忽略该目录。导出的报告不会自动清理,必须使用清理报告命令进行清理。
清理报告
使用快速面板提示用户具有在磁盘上保存已导出报告的软件包列表。当选择一个软件包时,所有报告都将被永久删除。