python 代码覆盖率统计

来源:互联网 发布:mac 双分区 双系统 编辑:程序博客网 时间:2024/05/16 08:51

初步用了下python的coverage,非常方便,可以去官网下载使用:http://nedbatchelder.com/code/coverage/

而且命令很简单,就那么几个:

[root@rdsjq-linux21-04 agent]# coverage helpCoverage.py, version 3.5.1Measure, collect, and report on code coverage in Python programs.usage: coverage <command> [options] [args]Commands:    annotate    Annotate source files with execution information.    combine     Combine a number of data files.    erase       Erase previously collected coverage data.    help        Get help on using coverage.py.    html        Create an HTML report.    report      Report coverage stats on modules.    run         Run a Python program and measure code execution.    xml         Create an XML report of coverage results.Use "coverage help <command>" for detailed help on any command.Use "coverage help classic" for help on older command syntax.For more information, see http://nedbatchelder.com/code/coverage[root@rdsjq-linux21-04 agent]# 

看统计结果可以用html,report 和xml


anotate的文件可以看到具体哪些行没有被执行到

 1 > import zmq  2 > from zmq.eventloop.ioloop import IOLoop  3 > from zmq.eventloop.zmqstream import ZMQStream  4 > import json  5 > import agent  6   7 > SIGNAL = 0  8 > task = []  9  10 > def gen_sub_task(msg): 11 >     try: 12 >         global SIGNAL 13 >         if SIGNAL == 1: 14 !             return 15 >         msg = msg[0] 16 >         print msg 17 >         worker = json.dumps(msg) 18 >         task.append(worker) 19  20 !     except Exception,e: 21 !         print e 22  23 > def start_task(msg): 24 >     try: 25 >         global SIGNAL 26 >         if SIGNAL == 1: 27 !             return 28 >         msg = msg[0] 29 >         if (msg == 'taskover'): 30 >             print msg 31               #job = agent.Agent(task) 32               #job.start() 33 >             task = [] 34 >             SIGNAL = 1 35 >         return 36 !     except Exception,e: 37 !         print e 38  39  40  41  42 > context = zmq.Context() 43 > sock = context.socket(zmq.PULL) 44 > sock.connect('tcp://10.1.147.162:7777') 45 > stream1 = ZMQStream(sock) 46 > stream1.on_recv(gen_sub_task)
上面带!的行就是没有执行过的行

执行的时候: coverage run **.py args

然后停掉的时候,就可以获取统计信息了

Name                                        Stmts   Miss  Cover---------------------------------------------------------------/home/qa/projects/rds-proxy/perf-test/log      10      7    30%agent                                          86     67    22%worker                                         40      6    85%---------------------------------------------------------------TOTAL                                         136     80    41%


唯一不是非常方便的地方就是一定要run的进程停下来才能看到统计信息。

下个项目就用它了,的却非常方便。


原创粉丝点击