python 整理ab性能脚本

上一篇 / 下一篇  2015-11-19 11:56:42 / 个人分类:测试技能

#!coding=utf-8
import os
import os.path
import re
import json
import xlrd,xlwt
from pyExcelerator import *

_match_ = {
           u"Concurrency Level":"并发数",
           u"Time per request":"请求响应时间",
           u"Complete requests":"完成请求数",
           u"Failed requests":"请求失败数",
           u"Non-2xx responses":"请求非2**返回数",
           u"Requests per second":"服务器QPS值",
           u"Transfer rate":"网络流量",
           u"Document Path":"url地址",
         }

''' 该函数是遍历读取一个文件夹下所有文件,使用到的函数有os.walk。os.walk()可以得到一个三元tupple(dirpath, dirnames, f    ilenames),其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
'''
def readfile(path):
    File = Workbook()
    table = File.add_sheet('result')
    table.write(2,2,'请求url'.decode('utf-8'))
    table.write(2,3,'并发数'.decode('utf-8'))
    table.write(2,4,'请求时间(ms)'.decode('utf-8'))
    table.write(2,5,'服务器QPS(笔/秒)'.decode('utf-8'))
    table.write(2,6,'完成请求数'.decode('utf-8'))
    table.write(2,7,'请求失败数'.decode('utf-8'))
    table.write(2,8,'网络流量(Kbytes/sec)'.decode('utf-8'))
   
    for parent,dirnames,filenames in os.walk(path):
        data_list =[]
        for filename in filenames:
            fn = "./log/" + filename
            try:
                with open(fn) as fd:
                    i = 0
                    data =dict()
                    for line in fd.readlines():         
                        i += 1
                        if 8 <= i <= 25 and i !=24:
                            dt = line.strip().split(':',2) #先去掉空行,再将每行值根据冒号分隔2个字段
                            if len(dt) == 2:
                                v = dt[1].strip().split(" ")  #将value值后面字符串去掉
                                if len(v)>=2:
                                    val = v[0]
                                    data[dt[0]]=val
                                else:
                                    data[dt[0]]=dt[1].strip()                            
                            else:
                                pass
                        else:
                            pass
                    #print type(data)
                    data_list.append(data)   
            except Exception,e:
                print str(e)
        #print len(data_list)
        #key = map(lambda d:int(d['Concurrency Level']),data_list)
        #print key
        #result = sorted(data_list,key=lambda d:int(d['Concurrency Level']),reverse=True)
        #sort进行按照并发数排序
        result = sorted(data_list,key=lambda d:int(d['Concurrency Level']))
        #print result
         
        #遍历结果,将需要数据输出
        k = 2
        j = 2
        a = 2 
        b = 2
        c = 2
        d = 2 
        for i in result :
             for key,value in i.iteritems():
                 if key not in _match_.keys():
                     pass
                 else:
                     chinese =_match_[key]
                     val =value
                     if key == 'Concurrency Level':
                         j = j + 1
                         table.write(j,3,val)
                     elif key == 'Time per request':
                         k = k +1
                         table.write(k,4,val)      
                     elif key == 'Requests per second':
                         a = a +1
                         table.write(a,5,val)
                     elif key == 'Complete requests':
                         b = b+1
                         table.write(b,6,val)
                     elif key == 'Failed requests':
                         c = c +1
                         table.write(c,7,val)
                     elif key == 'Transfer rate':
                         d = d +1 
                         table.write(d,8,val)
                     elif key == 'Document Path':
                         table.write(3,2,val)
                     else:
                         pass
                         
        File.save('mini.csv')              
                                     

if __name__=="__main__":
    path = "./log"
    readfile(path)


TAG: Python python

 

评分:0

我来说两句

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 93334
  • 日志数: 31
  • 建立时间: 2015-05-22
  • 更新时间: 2016-05-17

RSS订阅

Open Toolbar