技术宅,fat-man

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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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   codestyle  阅读(1307)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示