def _get_log_path(self): config_json = runArg().log_filepath (logfile_path, logfile_name) = os.path.split(config_json) if logfile_path and logfile_name: isExists = os.path.exists(logfile_path) if not isExists: os.makedirs(logfile_path) return config_json
class CommandLine(object): command_list=[ ["h","help","show help"] ]# 短命令超过1个字符 getopt会出错,暂时遗留问题 cps=command_parser() rarg=runArg() def __init__(self,argv): # LoggerBaseConfig()._initlogger() # self.logger=logging.getLogger("BearSki.commondline") for cmd in self.command_list: help_cmd=base_command(cmd[0],cmd[1],cmd[2]) self.cps.add_argument(help_cmd) self._run(argv) def _run(self,argv): # shot_cmd = self.cps.get_shot_arg() # long_cmd = self.cps.get_long_arg() # arguments=argv[1:] # if len(arguments)<2: # arguments.append(" ") # 命令行参数为空 # try: # opts, args = getopt.getopt(arguments,shot_cmd,long_cmd) # except getopt.GetoptError as e: # print (e) # # self.logger.error(e) # sys.exit(2) # for opt, arg in opts: # if opt in ('-h',"--help"): # self._command_h() # sys.exit() # elif opt in ("-f", "--configfile"): # self.rarg.config_path=arg.lstrip() #.lstrip() 去掉多余的空格 # self._command_f(arg.lstrip()) # break # elif opt in ("-r","--reportmode"): # self.rarg.report_mode = arg.lstrip() # elif opt in ("-m","--mode"): # self.rarg.mode = arg.lstrip() # elif opt in ("-p","--casepath"): # self.rarg.case_path=arg.lstrip() # elif opt in ("-n","--casename"): # self.rarg.case_name = arg.lstrip() # elif opt in ("-o","--outputpath"): # self.rarg.report_path = arg.lstrip() self._command_run(argv[1:]) def _command_h(self): self.cps.print_help_message() def _command_f(self,filepath): f= open(filepath) conf=json.load(f) self.rarg.setValueFromJson(conf) #print(self.rarg.getJsonString()) def _command_run(self,commond): SkiTestFactory().run(self.rarg,commond)
def __init__(self, name=''): self.logger = logging.getLogger(name) self.loglevel = get_level() self.logger.setLevel(self.loglevel) fmt = logging.Formatter( '[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s') # 设置CMD日志 sh = logging.StreamHandler() sh.setFormatter(fmt) sh.setLevel(self.loglevel) # 由于logging 的filehandler 与 stream 不能共存所以需要根据不同模式设置日志输出方式。 if runArg().report_mode == 'html': logging.basicConfig( stream=rut.stdout_redirector, format='[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s') if runArg().report_mode == 'text': # 设置文件日志 #logfile_path=SkiGlobalData().get_global_data("logfile_path") logfile_path = get_log_path() fh = logging.FileHandler(logfile_path) fh.setFormatter(fmt) fh.setLevel(self.loglevel) self.logger.addHandler(sh) self.logger.addHandler(fh)
def __init__(self, har_file_path, filter_str=None, exclude_str=None): self.har_file_path = har_file_path self.filter_str = filter_str self.exclude_str = exclude_str or "" self._openfiles() self.rArg=runArg()
def test_Argments(self): runArg()
def __init__(self): self.rags = runArg()
def _get_level(self): reloglevel = self._get_logging_level(runArg().log_level) return reloglevel
# 执行单条用例,顺序为 目录名 文件名 类名 方法名 中间"." 间隔 例如:"testcase.debug_test_user.TestUserLogin.test_login" suite = unittest.TestLoader().loadTestsFromName(dirpath) test_cases.addTests(suite) return test_cases else: suites = unittest.defaultTestLoader.discover(dirpath, name + '*.py', top_level_dir=dirpath) for suite in suites: test_cases.addTests(suite) return test_cases if __name__ == '__main__': rag = runArg() logger = SkiLogger('runtestt') report_type = 'html' isrunonecase = 'False' casepath = 'utest.testcase.test_CommonData' casename = 'test_' cases = get_test_cases(casepath, casename, isrunonecase) now = time.strftime("%Y-%m-%d %H_%M_%S") # 报告生成时间 test_reports_address = './utest/report' # 测试报告存放位置 filename = './utest/report/' + now + 'report.html' # 设置报告文件名 if (report_type == 'text'): logger.info("开始执行测试,报告输出模式text") runner = unittest.TextTestRunner() runner.run(cases) elif (report_type == 'html'):