初步用了下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 [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 " 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的进程停下来才能看到统计信息。
下个项目就用它了,的却非常方便。