1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | try: opts, args = getopt.getopt(sys.argv[1:], 'bchu', ['build', 'checkout', 'help', 'update']) except getopt.error, msg: self.usage() sys.exit(2) build_flag = 0 #构建选项 for o, a in opts: if o in ('-h', '--help'): self.usage() sys.exit() elif o in ('-c', '--checkout'): print "执行操作:迁出代码-->编译版本-->运行测试用例-->收集测试结果" build_flag = 1 break elif o in ('-u', '--update'): print "执行操作:更新代码-->编译版本-->运行测试用例-->收集测试结果" build_flag = 2 break elif o in ('-b', '--build'): print "执行操作:编译版本-->运行测试用例-->收集测试结果" build_flag = 3 break else: self.usage() sys.exit() if (0 == build_flag) : if 2 <= len(sys.argv): self.usage() sys.exit() raw_input('\n 按 Enter 键继续。。。(Ctrl+C 退出)\t') if (1 == build_flag) : #迁出代码,并编译代码 self.checkout_code() self.build_code() elif (2 == build_flag) : #更新代码,并编译代码 self.update_code() self.build_code() elif (3 == build_flag) : #编译代码 self.build_code() #运行测试用例并收集运行结果 self.set_python() self.run_testsuite() self.store_logs() |
1 2 3 4 5 | # 终止子进程的运行 def handler(self, signum, frame): if (-1 != self.subproc_id) : #subproc_id 定义在初始化函数中,用来存储当前子进程的 ID os.killpg(self.subproc_id, signal.SIGINT) sys.exit(-1) |
1 2 3 4 5 6 7 8 9 | def __init__(self): signal.signal(signal.SIGINT, self.handler) #注册需要捕获的信号量 self.myafs_dir = os.getenv('myafs') self.subproc_id = -1 #子进程 ID,用来在终止主进程时也同时终止子进程 self.debug_log = 'log.txt' #存储详细运行日志的文件名 self.debug_fullname = os.getcwd() + os.sep + self.debug_log #全路径文件名(假设产生在该目录下) self.sum_log = 'summary' #存储汇总日志的文件名 self.sum_fullname = os.getcwd() + os.sep + self.sum_log #全路径文件名(假设产生在当前目录下) self.share_dir = self.utafs_dir + '/SharedFiles' #共享目录文件名 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class COneClickRegTest: #设定一些经常使用的变量,如当前工作目录,日志名称、存储路径等 def __init__(self): #设定 python 环境变量,实现参见代码文件 def set_python(self): #更新代码,实现参见代码文件 def update_code(self): #迁出代码,实现参见第 2 章代码 def checkout_code(self): #编译版本,实现参见清单 1 代码 def build_code(self): #运行测试集,实现参见代码文件 def run_testsuite(self): #存储运行结果,实现参见清单 7 和清单 8 代码 def store_logs(self): #信号处理,实现参见清单 10 代码 def handler(self, signum, frame): #脚本使用说明,实现参见代码文件 def usage(self): #命令行解析以及执行对应的功能,实现参见清单 9 代码 def main(self): |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |