针对客户需求,会遇到测试用例中Counter名称改变的问题,此脚本主要解决批量Case文件修改Counter名称的问题,源码如下:
1 #!/usr/bin/python 2 # -*- coding:utf-8 -*- 3 4 import sys,os 5 import xlrd 6 7 # 枚举当前目录下的所有.mp文件,并返回list 8 def get_filename(): 9 #begin 10 fileDir = "." + os.sep 11 L = [] 12 for root, dirs, files in os.walk(fileDir): 13 for file in files: 14 if os.path.splitext(file)[1] == '.mp': 15 L.append(os.path.join(file)) 16 #print L 17 return L 18 #end 19 20 #通过读取Excel文件的方式获取旧的counter名称和新的counter名称,存为list 21 #并将所有get到的counter名称按照长度从大到小进行排序,防止短counter名称先替换 22 #实际执行中发现长counter名称包含短counter名称,而如果短counter先与长counter替换,则导致长counter无法替换 23 def get_countername(): 24 fname = "counterfile\CounterNameAll.xls" 25 bk = xlrd.open_workbook(fname) 26 shxrange = range(bk.nsheets) 27 try: 28 sh = bk.sheet_by_name("Sheet1") 29 except: 30 print "no sheet in %s named Sheet1" % fname 31 #获取行数 32 nrows = sh.nrows 33 #获取列数 34 ncols = sh.ncols 35 print "nrows %d, ncols %d" % (nrows,ncols) 36 37 counter_list = [] 38 row_list = [] 39 #获取各行数据 40 for i in range(0,nrows): 41 row_data = sh.row_values(i) 42 row_list.append(row_data) 43 #对get到的二维数组进行排序 44 row_list = sorted(row_list, key=lambda row:len(row[1]), reverse=True) 45 for i in range(0,nrows): 46 for j in range(0,ncols): 47 counter_list.append(row_list[i][j].encode('utf-8')) 48 new_list = [] 49 for count in counter_list: 50 new_list.append(count.replace('\xc2\xa0', ' ')) 51 for i in range(0,len(new_list),2): 52 new_list[i] = ' '*(len(new_list[i+1])-len(new_list[i])) + new_list[i] 53 print new_list 54 return new_list 55 56 57 58 #把指定文件的内容替换的函数,多个环境参数并行替换,这样就可以一个脚本,多个通用。 59 def repip_func(file_path, counter_list): 60 61 f = open(file_path,'r+') 62 all_the_lines = f.readlines() 63 f.seek(0) 64 f.truncate() 65 for line in all_the_lines: 66 i = 0 67 while i < len(counter_list): 68 line = line.replace(counter_list[i+1],counter_list[i]) 69 i = i + 2 70 f.write(line) 71 f.close() 72 73 #print "%s have replace ip %s" % (file_path, counter_list) 74 75 def main(): 76 repip_file_list = get_filename() 77 counter_list = get_countername() 78 for file_path in repip_file_list: 79 repip_func(file_path, counter_list) 80 #print counter_list 81 82 if __name__ == "__main__": 83 main()
具体的使用文档:
Counter名称修改脚本使用手册:
1.将需要修改的counter名复制粘贴到Excel里,counter名称保存为n行2列,第一列为new counter名,第二列为old counter名,不需要表头,从(row1,col1)开始:
2.在CounterRename.py同级目录下新建counterfile文件夹,并将excel保存至counterfile文件夹内,如图:
3.在CounterRename.py中修改保存的excel名称:
4.将需要修改counter名称的文件放CounterRename.py同级目录下:
5.在CounterRename.py中修改需要批量Rename的文件属性:
6.执行CounterRename.py脚本,即可完成修改。
注:
执行脚本时,控制台回打印从excel中获得的文件名,以方便检查,new_counter_name前的空格是对齐需要,不影响实际修改