技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

coverage.py - python 单元测试覆盖率统计工具

前提:
1.假定已经安装好coverage.py(ubuntu 10.10+python.2.7+coverage3.5.1)
2.项目里有模块do.py以及测试它的单元测试模块doTEST.py

命令行:
$ cd /home/user1/workspace/hp1
$ coverage run doTEST.py
$ coverage report
$ coverage html

命令解释:
第一个命令进入项目目录,第二个命令 执行coverage命令,调用单元测试,进进行统计(当前目录生成.coveage文件,该文件默认隐藏)第三个命令是读取.coveage文件并打印到屏幕,第四个命令时,生成详细的HTML报表(htmlcov文件夹)

补充:
1)coverage的另一种方式是可以作为模块被程序import,通过代码保存统计,未尝试。
2)如果原来测试的代码接收参数,如
$ doTEST.py 100 200
那么可以这样调用我们的单元测试
$ coverage run doTEST.py 100 200

疑问:
我似乎觉得重新执行上述命令时,没有重新生成报表,如果是这样的话应该在执行之前执行rm命令将生成的.coveage和htmlcov文件夹先删除掉,待确认

查看HTML报表:
进入htmlcov目录,使用firefox打开index.html文件,该文件里包含一个列表,列出了doTEST.py使用过的所有模块的代码覆盖信息,其中也包括我们关心的do.py的情况,如果测试用例完善,理论上do.py每一行代码都应该被执行过(被覆盖),反之如果do.py里某些代码没有被执行,则说明我们的测试用例还不完善,需要增加测试用例,以保证do.py每一行都被执行过。

在目录页我们可以看到概要信息,点击文件名可以查看信息,例如:

 分支覆盖:

$ coverage run --branch doTEST.py

posted on 2012-01-13 18:45  codestyle  阅读(1300)  评论(1编辑  收藏  举报