亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

編寫Python小程序來統計測試腳本的關鍵字

2020-01-04 17:38:03
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了編寫Python小程序來統計測試腳本的關鍵字的方法,文中的實例不僅可以統計關鍵字數量,還可以按主關鍵字來歸類,需要的朋友可以參考下
 

通常自動化測試項目到了一定的程序,編寫的測試代碼自然就會很多,如果很早已經編寫的測試腳本現在某些基礎函數、業務函數需要修改,那么勢必要找出那些引用過這個被修改函數的地方,有些IDE支持全文查找和引用查找,而有些簡單的可能就沒有,因為日后要用到統計功能、和一些其它的需求,所以寫了一個腳本。除了跟目錄下全文查找引用過的文件外,還是支持統計查找到的數量,一次可以查找多個關鍵字,支持按主關鍵字來歸類。

#encoding: utf-8 import os import sys import re  reload(sys) sys.setdefaultencoding("utf-8")  short_exclude = [".svn", "sendbox"]  ##不檢查的文件、目錄名 long_exclude = []  ##不包含檢查的文件、目錄的完整路徑 extend_name = [".rb"] ##指定檢查的文件后綴 temp_key_words = [    {     "key" : "#作者:",     "display" : "作者",     "times" : -1,     "match" : "include",     "primary_key" : True,   },   {     "key" : "#[summary]",     "display" : "完成用例數",     "times" : -1,     "match" : "include",   },     {     "key" : "File.expand_path",     "display" : "有狀態行數",     "times" : -1,     "ignore_case" : True,   },     {     "key" : "def/s+test_",     "display" : "有效用例數",     "times" : -1,     "match" : "regex",     "ignore_case" : True,   },     {     "key" : "#def/s+test_",     "display" : "注釋用例數",     "times" : -1,     "match" : "regex",     "ignore_case" : True,   },   ]  for kv in temp_key_words:   if not "key" in kv:     raise "以下的列表中沒有【key】值!/n%s" % kv   if not "key" in kv:     raise "以下的列表中沒有【display】值!/n%s" % kv     kv['times'] = kv.get('times', -1)  ##默認為不限制檢查次數      if kv.get("ignore_case", True)==False: ##默認忽略大小寫     flag = 0   else:     flag = re.I       kv['pattern'] = re.compile(kv['key'], flag)   if kv.get("primary_key", False):     kv['times'] = 1 import copy key_words = []      def deepcopy(objs):   t_list = []   for obj in objs:     t_list.append(copy.copy(obj))   return t_list  def loop_case(root_dir):   t_sum = []   print root_dir   sub_gen = os.listdir(root_dir)   for sub in sub_gen:     if sub in short_exclude: ##在不檢查文件、目錄范圍中       continue     abs_path = os.path.join(root_dir, sub)     if long_exclude:       is_exclude = False       for exclude in long_exclude:         if exclude == abs_path[-len(exclude):]:           is_exclude = True           break       if is_exclude:         continue     print abs_path     if os.path.isdir(abs_path):       print "dir"       t_sum.extend(loop_case(abs_path))     elif os.path.isfile(abs_path):             if not "." + abs_path.rsplit(".", 1)[1] in extend_name: ##不在后綴名 檢查范圍中         continue       print "file"       global key_words        key_words = deepcopy(temp_key_words)            t_sum.append(count_case(abs_path))    return t_sum        def count_case(abs_path):     t_dict = {}   with open(abs_path) as f:     for l in f:       l = l.strip()       match_rule(l)    index = 0   count_result = [0] * len(key_words)      for kv in key_words:      if 'primary_key' in kv:       t_dict['primary_key'] = kv.get('display')       t_dict['primary_key_value'] = kv.get('primary_key_value', "None")     count_result[index] = -1-kv['times']      index += 1    t_dict['match_result'] = count_result   t_dict['file_path'] = abs_path    return t_dict  def match_rule(line):   primary_key = None    for kv in key_words:     match = False              if kv['times']==0: ##檢查次數已滿,不再檢查       continue     if kv.get('match', "") == "regex": ##指定了匹配方式為:正則       if kv['pattern'].match(line):  ##匹配正則成功         match = True     else:  ##默認匹配方式為: 包含       if kv['key'] in line:  ##包含了指定字符串         match = True     if match:       if kv.get('primary_key', False):         kv['primary_key_value'] = line.split(kv['key'])[1].strip()   #        kv['primary_key'] = False             kv['times'] -= 1      ##匹配成功,同理剩余匹配的次數 -1   return primary_key        def format_info(sum_list):   tip_list = []     p_k_dict = {}   for d in sum_list:     p_k = d['primary_key_value']     if p_k not in p_k_dict:       p_k_dict[p_k] = [0] * len(key_words)      temp_list = []     m = d['match_result']     temp_list.append("文件名稱:%s/n%s:%s/n" % (d['file_path'], d['primary_key'], d['primary_key_value']))     for i in range(len(m)):       if 'primary_key' in key_words[i]:                 continue        else:         t_s = str(m[i])       temp_list.append("%s:%s/n" % (key_words[i]["display"], t_s))       p_k_dict[p_k][i] += m[i]     tip_list.append("".join(temp_list))     p_k_dict[p_k][0] += 1   tip_list.append("===========================主鍵統計分割線===============================")   total_dict = {}   for kv in key_words:     if 'primary_key' not in kv:       total_dict[kv['display']] = 0   total_dict['全部文件數'] = 0   for k,v in p_k_dict.items():     temp_list = []     temp_list.append("主鍵:%s/n文件總數:%s/n" % (k, v[0]))     for i in range(1, len(v)):       temp_list.append("%s:%s/n" % (key_words[i]["display"], str(v[i])))        total_dict[key_words[i]["display"]] += v[i]         tip_list.append("".join(temp_list))     total_dict['全部文件數'] += v[0]   tip_list.append("===========================全部統計分割線===============================")   temp_list = []   for k,v in total_dict.items():     temp_list.append("全部%s:%s/n" % (k,v))   tip_list.append("".join(temp_list))   tip_msg = "/n".join(tip_list)   print tip_msg   open(r"sum_case.log", "w").write(tip_msg)    if __name__=="__main__":   if len(sys.argv) > 1:     root_list = sys.argv[1:]   else:     root_list = [os.curdir]   sum_list = []   for root_dir in root_list:       if os.path.exists(root_dir) and os.path.isdir(root_dir):       sum_list.extend(loop_case(root_dir))       format_info(sum_list)     else:       print "給定的根目錄無效/n%s" % root_dir 

可以通過配置開頭的設置來確定檢查什么關鍵字,文件類型,過濾哪些文件和目錄等


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲a一级视频| 欧美性猛交xxxx免费看久久久| 中文字幕亚洲欧美日韩2019| 国产精品免费观看在线| 欧美激情奇米色| 久久国内精品一国内精品| 国产精品wwww| 国产欧美婷婷中文| 尤物yw午夜国产精品视频| 国产主播在线一区| 国产精品视频自拍| 欧美大片在线免费观看| 日韩精品一区二区视频| 国产在线观看精品| 日韩人在线观看| 亚洲国产成人久久综合| 亚洲最大av在线| 亚洲天堂av网| 午夜精品久久久久久久久久久久久| 日韩精品一区二区三区第95| 久久亚洲综合国产精品99麻豆精品福利| 一个人看的www久久| 91久久国产精品| 亚洲国产精品一区二区三区| 久久久久久国产三级电影| 亚洲成人免费在线视频| 欧美午夜www高清视频| 456国产精品| 高清在线视频日韩欧美| 亚洲欧美在线磁力| 成人福利网站在线观看| 日韩精品在线观| 精品国产一区二区三区久久久| 九九九久久国产免费| 国产suv精品一区二区三区88区| 亚洲精品日韩激情在线电影| 欧美二区乱c黑人| 96国产粉嫩美女| 亚洲视频网站在线观看| 亚洲国产97在线精品一区| 国产日韩在线免费| 久久久久久久av| 在线不卡国产精品| 亚洲欧美国产精品专区久久| 日韩中文在线视频| 欧美激情网站在线观看| 日韩美女av在线免费观看| 91精品久久久久久久久青青| 成人疯狂猛交xxx| 久久久久久久网站| 欧美精品日韩三级| 亚洲成人av在线| 欧美日韩精品二区| 国产日韩专区在线| 欧美二区在线播放| 亚洲国产一区自拍| 久久综合色影院| 69久久夜色精品国产69乱青草| 欧美日韩ab片| 欧美怡春院一区二区三区| 7m第一福利500精品视频| 国产精品18久久久久久首页狼| 韩国欧美亚洲国产| 92国产精品视频| 欧美又大又硬又粗bbbbb| www欧美xxxx| 久久成年人视频| 久久久久久久爱| 欧美视频在线观看免费网址| 日韩亚洲在线观看| 欧美一级成年大片在线观看| 日韩av电影免费观看高清| 亚洲成人免费在线视频| 国产成人一区三区| 久久久欧美精品| 午夜欧美大片免费观看| 国产午夜精品全部视频在线播放| 久热精品视频在线观看一区| 久久99久久久久久久噜噜| 欧美在线亚洲在线| 日韩欧美亚洲一二三区| 国产精品久久久久久久久久久久| 亚洲www在线观看| 日本一区二区三区四区视频| 欧美日韩国产中字| 欧美一区二区三区免费视| 国产精品电影久久久久电影网| 亚洲精品综合精品自拍| 亚洲精品91美女久久久久久久| 91久久综合亚洲鲁鲁五月天| 国产精品日韩欧美大师| 国产精品成人一区二区三区吃奶| 欧美午夜视频在线观看| 日本亚洲欧美三级| 国产亚洲视频中文字幕视频| 欧美激情va永久在线播放| 正在播放欧美视频| 色阁综合伊人av| 成人国产精品色哟哟| 欧美在线亚洲在线| 红桃视频成人在线观看| 久久中文字幕在线| 欧美精品免费播放| 日韩在线国产精品| 国产视频精品va久久久久久| 亚洲国产天堂久久综合网| 色先锋资源久久综合5566| 视频直播国产精品| 亚洲a级在线观看| 国产在线不卡精品| 久久久久亚洲精品成人网小说| 亚洲激情视频网| 久久艹在线视频| 啊v视频在线一区二区三区| 欧美激情视频一区二区| 精品中文字幕在线| 91美女片黄在线观看游戏| 91地址最新发布| 成人国产精品一区| 日本精品va在线观看| 国产福利精品av综合导导航| 欧美激情在线观看| 久久久精品久久久| 97久久精品人人澡人人爽缅北| 国产精品流白浆视频| 91高清视频免费| 在线观看视频99| 精品视频在线观看日韩| www.国产精品一二区| 欧美午夜激情小视频| 日韩在线视频免费观看高清中文| 国产裸体写真av一区二区| 8x海外华人永久免费日韩内陆视频| 2019日本中文字幕| 亚洲跨种族黑人xxx| 欧美性xxxx极品hd欧美风情| 国产91精品最新在线播放| 97精品国产97久久久久久春色| 欧美自拍大量在线观看| 91免费欧美精品| 国产欧美日韩丝袜精品一区| 亚洲国产日韩精品在线| 日韩福利在线播放| 日韩va亚洲va欧洲va国产| 中文字幕精品一区久久久久| 成人美女av在线直播| 亚洲四色影视在线观看| 在线亚洲男人天堂| 88xx成人精品| 97视频在线免费观看| 亚洲第一中文字幕| 国产精品av在线| 欧美成人精品在线播放| 91精品国产99久久久久久| 国产一区二区三区在线观看网站| 亚洲夜晚福利在线观看| 亚洲成av人影院在线观看| 欧美精品aaa| 久久香蕉国产线看观看网| 最近中文字幕mv在线一区二区三区四区| 欧美激情视频一区二区三区不卡| 日韩在线观看免费高清| 国产精品久久久久久久久| 亚洲最大中文字幕|