def run_test(request): """ 运行用例 :param request: :return: """ account = request.session["now_account"] kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) if request.is_ajax(): request_data = json.loads(request.body.decode('utf-8')) # report_name = kwargs.get('report_name', None) main_hrun.delay(testcase_dir_path, account, request_data) return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告') else: id = request.POST.get('id') base_url = request.POST.get('env_name') type = request.POST.get('type', 'test') report_name = run_test_by_type(id, base_url, testcase_dir_path, type) runner.run2(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary, type=False) add_test_reports(runner, report_name=report_name, report_type=type, executor=account) return render_to_response('report_template.html', runner.summary)
def asyn_execute_case(data=None): logger.setup_logger('INFO') service_name = data.get('service_name') service_version = data.get('service_version') execute_source = data.get('execute_source') report_name = data.get('report_name') service_config_id = data.get('service_config_id') id = data.get('id') base_url = data.get('base_url') if base_url is None: base_url = '' if not service_config_id: service_configs = ServiceConfig.objects.filter( service_name=service_name, service_version=service_version).all() service_config_id = list(service_configs)[0].id report_runner = run_by_service(service_config_id, base_url) report_data = { 'execute_service': service_name, 'execute_source': execute_source, 'execute_id': id } if not report_name: report_name = '禅道执行' + service_name + '服务' add_test_reports(report_runner, report_name=report_name, report_type='service', executor='system', report_data=report_data) return report_runner
def project_hrun(name, base_url, project, receiver): """ 异步运行整个项目 :param env_name: str: 环境地址 :param project: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) id = ProjectInfo.objects.get(project_name=project).id testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) run_by_project(id, base_url, testcase_dir_path) runner.run(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary) add_test_reports(report_name=name, **runner.summary) if receiver != '': send_html_reports(receiver, runner) return runner.summary
def module_hrun(name, base_url, module, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) module = list(module) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) try: for value in module: run_by_module(value[0], base_url, testcase_dir_path) except ObjectDoesNotExist: return '找不到模块信息' runner.run(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary) add_test_reports(report_name=name, **runner.summary) if receiver != '': send_html_reports(receiver, runner) return runner.summary
def suite_hrun(name, base_url, suite, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) suite = list(suite) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) try: for value in suite: run_by_suite(value[0], base_url, testcase_dir_path) except ObjectDoesNotExist: return '找不到Suite信息' run_time = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time())) runner.run(testcase_dir_path) shutil.rmtree(testcase_dir_path) add_test_reports(run_time, report_name=name, **runner.summary) if receiver != '': send_html_reports(receiver, runner) return runner.summary
def module_hrun(name, base_url, module, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_lists = [] module = list(module) try: for value in module: testcase_lists.extend(run_by_module(value[0], base_url)) except ObjectDoesNotExist: return '找不到模块信息' run_time = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time())) runner.run(testcase_lists) add_test_reports(run_time, report_name=name, **runner.summary) if receiver != '': send_html_reports(receiver, runner) return runner.summary
def main_hrun(testset_path): logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) runner.run(testset_path) add_test_reports(**runner.summary) return runner.summary
def main_hrun(testset_path, report_name): logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) run_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) runner.run(testset_path) add_test_reports(run_time, report_name=report_name, **runner.summary) return runner.summary
def run_batch_test(request): """ 批量运行用例 :param request: :return: """ account = request.session["now_account"] kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) if request.is_ajax(): request_data = json.loads(request.body.decode('utf-8')) batch_main_hrun.delay(testcase_dir_path, account, request_data) return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告') else: type = request.POST.get('type', None) base_url = request.POST.get('env_name') report_name = request.POST.get('report_name') test_list = request.body.decode('utf-8').split('&') if type: run_by_batch(test_list, base_url, testcase_dir_path, type=type, mode=True) else: run_by_batch(test_list, base_url, testcase_dir_path) runner.run2(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary, type=False) if not report_name: report_name = '批量执行' if type == 'project': report_name = report_name + '项目' elif type == 'module': report_name = report_name + '模块' elif type == 'suite': report_name = report_name + '套件' elif type is None: report_name = report_name + '用例' if type is None: type = 'test' add_test_reports(runner, report_name=report_name, report_type=type, executor=account) return render_to_response('report_template.html', runner.summary)
def project_hrun(env_name, project): logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) id = ProjectInfo.objects.get(project_name=project).id testcases_dict = run_by_project(id, env_name) run_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) runner.run(testcases_dict) add_test_reports(run_time, report_name=project, **runner.summary) return runner.summary
def suite_hrun(env_name, base_url, suite, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) suite = list(suite) test_case_dir_path = os.path.join(os.getcwd(), "suite") test_case_dir_path = os.path.join(test_case_dir_path, get_time_stamp()) try: for value in suite: run_by_suite(value[0], base_url, test_case_dir_path) except ObjectDoesNotExist: return '找不到Suite信息' runner.run(test_case_dir_path) shutil.rmtree(test_case_dir_path) runner.summary = timestamp_to_datetime(runner.summary) report_path = add_test_reports(runner, report_name=env_name) if receiver != '': send_email_reports(receiver, report_path) os.remove(report_path)
def admin_test(request): try: base_url = tools.get(request,'env_name') name = tools.get(request,'name') except Exception: return JsonResponse({"status":2000,"message":"parameter 'base_url' or 'name' is Missing"}) else: id = TestCaseInfo.objects.get(name=name).id kwargs = {"failfast": False,} runner = HttpRunner(**kwargs) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) type = request.POST.get('type', 'test') run_test_by_type(id, base_url, testcase_dir_path, type) runner.run(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary, type=False) report_name = kwargs.get('report_name', None) reports_url = add_test_reports(runner, report_name=report_name) timeStamp = tools.getRe(reports_url,r"\\(\d+?)\.") name = tools.getTime(int(timeStamp)) id = TestReports.objects.get(report_name=name).id reports_url = "http://192.168.80.86:8000/admin/view_report/%d/" %(id) status = runner.summary.get('success') successes = runner.summary.get('stat').get('successes') testsRun = runner.summary.get('stat').get('testsRun') response_data = {'status':status,'success':successes,'testsRun':testsRun,'reports_url':reports_url} return JsonResponse(response_data)
def suite_hrun(name, base_url, suite, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.info("异步运行套件") suite = list(suite) testcase_dir_path = os.path.join( os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) try: for value in suite: run_by_suite(value[0], base_url, testcase_dir_path) except ObjectDoesNotExist: return '找不到Suite信息' summary = main_run_cases(testcase_dir_path) report_path = add_test_reports(summary, report_name=name) if receiver != '': send_email_reports(receiver, report_path) os.remove(report_path)
def main_hrun(testset_path, report_name): """ 用例运行 :param testset_path: dict or list :param report_name: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) run_time = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time())) runner.run(testset_path) add_test_reports(run_time, report_name=report_name, **runner.summary) return runner.summary
def run_test(request): print("!!!用例开始运行!!!") print(request.body) print(request.path) print(request.encoding) print(request.method) print(request.META.get("CONTENT_TYPE")) print("请求来源:",request.META.get("REMOTE_ADDR")) """ 运行用例 :param request: :return: """ kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) if request.is_ajax(): kwargs = json.loads(request.body.decode('utf-8')) id = kwargs.pop('id') base_url = kwargs.pop('env_name') type = kwargs.pop('type') run_test_by_type(id, base_url, testcase_dir_path, type) report_name = kwargs.get('report_name', None) main_hrun.delay(testcase_dir_path, report_name) return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告') else: id = request.POST.get('id') base_url = request.POST.get('env_name') type = request.POST.get('type', 'test') print(id,base_url,type) run_test_by_type(id, base_url, testcase_dir_path, type) t1 = runner.run(testcase_dir_path) print("用例执行结果",t1.gen_html_report()) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary, type=False) #修复BUG一,测试完成后report没有落库,可能是没有调用此方法,补充如下: report_name = kwargs.get('report_name', None) add_test_reports(runner, report_name=report_name) return render_to_response('report_template.html', runner.summary)
def main_hrun(testset_path, report_name): """ 用例运行 :param testset_path: dict or list :param report_name: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) runner.run(testset_path) shutil.rmtree(testset_path) runner.summary = timestamp_to_datetime(runner.summary) add_test_reports(report_name=report_name, **runner.summary) return runner.summary
def project_hrun(base_url, project, config): """ 异步运行整个项目 :param env_name: str: 环境地址 :param project: str :return: """ logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) id = ProjectInfo.objects.get(project_name=project).id testcases_dict = run_by_project(id, base_url, config) run_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) runner.run(testcases_dict) add_test_reports(run_time, report_name=project, **runner.summary) return runner.summary
def module_hrun(env_name, project, module): logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_lists = [] module = module.split(',') try: for module_name in module: id = ModuleInfo.objects.get( module_name__exact=module_name, belong_project__project_name=project).id testcase_lists.extend(run_by_module(id, env_name)) except ObjectDoesNotExist: return '找不到模块信息' run_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) runner.run(testcase_lists) add_test_reports(run_time, report_name=project, **runner.summary) return runner.summary
def main_hrun(testset_path, executor=None, request_data=None): """ 用例运行 :param testset_path: dict or list :param report_name: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) error_info = { 'start_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') } report_type = 'test' report_name = '执行异常' try: id = request_data.pop('id') base_url = request_data.pop('env_name') type = request_data.pop('type') report_name = request_data.get('report_name', None) if type: report_type = type report_name2 = run_test_by_type(id, base_url, testset_path, type) if not report_name: report_name = report_name2 runner.run2(testset_path) shutil.rmtree(testset_path) runner.summary = timestamp_to_datetime(runner.summary) report_path = add_test_reports(runner, report_name=report_name, report_type=report_type, executor=executor) except Exception as e: logger.log_info("出现异常: {0}".format(e)) error_info['error_msg'] = "出现异常: {0}".format(e) add_error_reports(error_info, report_name=report_name, report_type=report_type, executor=executor) except BaseException as e: logger.log_info("出现异常: {0}".format(e)) error_info['error_msg'] = "出现异常: {0}".format(e) add_error_reports(error_info, report_name=report_name, report_type=report_type, executor=executor)
def main_hrun(testset_path, report_name): """ 用例运行 :param testset_path: dict or list :param report_name: str :return: """ logger.info("运行用例") #运行测试用例 summary = main_run_cases(testset_path) report_path = add_test_reports(summary, report_name=report_name) os.remove(report_path)
def project_hrun(name, base_url, project, receiver): """ 异步运行整个项目 :param env_name: str: 环境地址 :param project: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) id = ProjectInfo.objects.get(project_name=project).id testcases_dict = run_by_project(id, base_url) run_time = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time())) runner.run(testcases_dict) add_test_reports(run_time, report_name=name, **runner.summary) if receiver != '': send_html_reports(receiver, runner) return runner.summary
def run_service(request): account = request.session["now_account"] base_url = '' if request.is_ajax(): data = json.loads(request.body.decode('utf-8')) id = data.get('id') mode = data.get('mode') service_config = ServiceConfig.objects.get(id=id) # 异步执行 data['service_config_id'] = id data['report_name'] = '异步执行' + service_config.service_name + '服务' asyn_execute_case.delay(data) return HttpResponse('正在执行中,请稍后查看报告即可,默认时间戳命名报告') else: id = request.POST.get('id') mode = request.POST.get('mode') service_config = ServiceConfig.objects.get(id=id) report_runner = run_by_service(id, base_url) report_name = '执行' + service_config.service_name + '服务' add_test_reports(report_runner, report_name=report_name, report_type='service', executor=account) return render_to_response('report_template.html', report_runner.summary)
def module_hrun(base_url, module, project, config): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('DEBUG') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) testcase_lists = [] module = list(module) try: for value in module: testcase_lists.extend(run_by_module(value[0], base_url, config)) except ObjectDoesNotExist: return '找不到模块信息' run_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) runner.run(testcase_lists) add_test_reports(run_time, report_name=project, **runner.summary) return runner.summary
def main_hrun(testset_path, report_name, envId): # print('testset_path: ', testset_path) """ 用例运行 :param testset_path: dict or list :param report_name: str :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) runner.run(testset_path) shutil.rmtree(testset_path) runner.summary = timestamp_to_datetime(runner.summary, env_id=envId) report_path = add_test_reports(runner, report_name=report_name) # print('report_path: ', report_path) os.remove(report_path)
def project_hrun(name, base_url, project, receiver): """ 异步运行整个项目 :param env_name: str: 环境地址 :param project: str :return: """ logger.info("异步运行整个项目") id = ProjectInfo.objects.get(project_name=project).id testcase_dir_path = os.path.join( os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) run_by_project(id, base_url, testcase_dir_path) # 运行测试用例 summary = main_run_cases(testcase_dir_path) report_path = add_test_reports(summary, report_name=name) if receiver != '': send_email_reports(receiver, report_path) os.remove(report_path)
def suite_hrun(name, base_url, suite, receiver): """ 异步运行模块 :param env_name: str: 环境地址 :param project: str:项目所属模块 :param module: str:模块名称 :return: """ logger.setup_logger('INFO') kwargs = { "failfast": False, } runner = HttpRunner(**kwargs) suite = list(suite) testcase_dir_path = os.path.join(os.getcwd(), "suite") testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp()) try: for value in suite: run_by_suite(value[0], base_url, testcase_dir_path) except ObjectDoesNotExist: return '找不到Suite信息' # runner.run(testcase_dir_path) runner.summary = runner.run(testcase_dir_path) shutil.rmtree(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary) # report_path = add_test_reports(runner, report_name=name) report_result = add_test_reports(runner, report_name=name) report_path, report_id = report_result[0], report_result[1] # 处理报告结果失败,发送失败主题邮件 if not runner.summary.get('success', None): FailName = [] for i in runner.summary.get('details'): if i.get('success') == False: FailName.append(i.get('name')) # subjects = "定时任务出现错误情况预警通知" status = "【 失败 】" bodyText = "{}定时任务执行失败用例如下:<br>  {} <br> 请套件相关维护人员及时确认!!!".format( name, '<br>  '.join(FailName)) send_email_reports(receiver, report_path, name=name, bodyText=bodyText, status=status) os.remove(report_path) # 调用dingding机器人发送失败通知 bodyText = "{}定时任务执行失败用例如下:\n {}\n如需了解更多内容,请关注邮箱中邮件!".format( name, '\n '.join(FailName)) callDingTalkRobot(name, bodyText) return "" # 处理接口响应时长超时,发送告警邮件 timeOut_result = statistics_summary_timeOut(runner.summary) if timeOut_result: status = "【 告警 】" bodyText = "{0}定时任务执行接口时长告警用例如下: {1}".format( name, write_htmlTable(timeOut_result)) # 创建bug createrZentaoBug(suite[0], timeOut_result, report_id=report_id) send_email_reports(receiver, report_path, name=name, bodyText=bodyText, status=status) if receiver != '': send_email_reports(receiver, report_path, name=name) os.remove(report_path)