您的位置:首页 > 编程语言 > Python开发

python 代码覆盖率统计

2012-02-13 19:55 501 查看
初步用了下python的coverage,非常方便,可以去官网下载使用:http://nedbatchelder.com/code/coverage/

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

[root@rdsjq-linux21-04 agent]# coverage help
Coverage.py, version 3.5.1
Measure, 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的进程停下来才能看到统计信息。

下个项目就用它了,的却非常方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: