笔者是一个通信测试攻城狮,之前做过一段时间的持续集成。工作内容只要就是对主线版本进行基本通信功能守护,测试执行都是自动化完成,也是那个时候开始接触到代码。
当时经常遇到的一个问题是:某一天我们发现版本有重大BUG,但是到上一次我们验证PASS中间已经经历过很多版本,我们需要手动从中间找到第一个出现BUG的版本,当然最简单的方法是二分法,取中间版本,根据有没有BUG再缩小范围,继续取中间版本。。。当时我的想法就是思路很固定,完全可以自动化完成,可惜当时我不会写代码。。。直到今天看Python递归函数才想我何不直接把这么多年的想法实现了?于是今天下午就开始构思,终于有点成果,拿出来和大家分享一下。
#encoding:utf8 from random import randint class BinarySearch: def __init__(self,maxNumber): n = randint(0,maxNumber-1) self.filelist = [] for i in range(maxNumber): f = open(str(i)+‘.txt‘,‘w+‘) if i<n: f.write(‘True‘) self.filelist.append(str(i)+‘.txt‘) else: f.write(‘False‘) self.filelist.append(str(i)+‘.txt‘) f.close() def fread(self,filename): f = open(filename) return f.read()==‘True‘ def newlist(self,clist): mid = len(clist)/2 if self.fread(clist[mid]) == False: return clist[:mid+1] else: return clist[mid:] def FindFirstFalse(self,newfilelist): if len(newfilelist) == 1: return newfilelist[0] elif len(newfilelist) == 2 and self.fread(newfilelist[0]) == True: return newfilelist[1] elif len(newfilelist) == 2 and self.fread(newfilelist[0]) == False: return newfilelist[0] else: return self.FindFirstFalse(self.newlist(newfilelist)) f = BinarySearch(123) print ‘The first False is‘,f.FindFirstFalse(f.filelist)
测试结果:
当然应用时候要根据实际情况将txt文件修改为版本列表
时间: 2024-11-16 04:43:26