def run_testcase(instance, testcase_dir_path): """ 运行用例 :return: :param instance: 实例 :param testcase_dir_path: 用例根目录路径 :return dict """ runner = HttpRunner() # runner.run(testcase_dir_path) try: runner.run(testcase_dir_path) except ParamsError: logger.error("用例参数有误") data = {"msg": "用例参数有误"} return Response(data, status=400) runner.summary = timestamp_to_datetime(runner.summary, type=False) try: report_name = instance.name except Exception as e: report_name = '被遗弃的报告' + '-' + datetime.strftime( datetime.now(), '%Y%m%d%H%M%S') report_id = create_report(runner, report_name=report_name) data_dict = {"id": report_id} return Response(data_dict, status=status.HTTP_201_CREATED)
def run_testcase(instance, testcase_dir_path): # 1、创建HttpRunner对象 runner = HttpRunner() try: # 2、运行用例 runner.run(testcase_dir_path) except Exception as e: res = {'msg': '用例执行失败', 'code': '0'} return Response(res, status=400) # 3、创建报告 report_id = generate_report(runner, instance) return Response({'id': report_id}, status=201)
def run_testcase(instance, testcase_dir_path): runner = HttpRunner() runner.run(testcase_dir_path) runner.summary = timestamp_to_datetime(runner.summary, type=False) try: report_name = instance.name except Exception as e: report_name = '遗弃的报告' + '-' + datetime.strftime(datetime.now()) report_id = create_report(runner, report_name=report_name) data_dict = {"id": report_id} return Response(data_dict, status=status.HTTP_201_CREATED)
def run_testcase(instance, testcase_dir_path): # 1、运行用例 runner = HttpRunner() try: runner.run(testcase_dir_path) except: res = {'ret': False, 'msg': '用例执行失败'} return Response(res, status=400) # 2、创建报告 report_id = create_report(runner, instance.name) # 3、用例运行成功之后,需要把生成的报告id返回 data = {'id': report_id} return Response(data, status=201)
def main_ate(cases): logger.setup_logger('INFO') # importlib.reload(httprunner) # print(cases) # importlib.reload(importlib.import_module('func_list.build_in_func')) runner = HttpRunner().run(cases) summary = runner.summary return summary
def run_testcase(instance, testcase_dir_path): runner = HttpRunner() runner.run(testcase_dir_path) # runner.summary 统计了用例运行详情 runner.summary = timestamp_to_datetime(runner.summary, type=False) try: # 报告名称为用例名称 report_name = instance.name except Exception as e: # 如果报告名称不存在: report_name = '被遗弃的报告' + '-' + datetime.strftime( datetime.now(), '%Y%m%d%H%M%S%f') # create_report生成报告,返回报告id值 report_id = create_report(runner, report_name=report_name) data_dict = {"id": report_id} return Response(data_dict, status=status.HTTP_201_CREATED)
def main_hrun(): """ API test: parse command line options and run commands. """ parser = argparse.ArgumentParser( description='HTTP test runner, not just about api test and load test.') parser.add_argument('-V', '--version', dest='version', action='store_true', help="show version") parser.add_argument('testset_paths', nargs='*', help="testset file path") parser.add_argument( '--html-report-name', help= "specify html report name, only effective when generating html report." ) parser.add_argument('--html-report-template', help="specify html report template path.") parser.add_argument('--log-level', default='INFO', help="Specify logging level, default is INFO.") parser.add_argument( '--dot-env-path', help= "Specify .env file path, which is useful for keeping production credentials." ) parser.add_argument( '--failfast', action='store_true', default=False, help="Stop the test run on the first error or failure.") parser.add_argument('--startproject', help="Specify new project name.") args = parser.parse_args() logger.setup_logger(args.log_level) if args.version: logger.color_print("{}".format(__version__), "GREEN") exit(0) dot_env_path = args.dot_env_path or os.path.join(os.getcwd(), ".env") if dot_env_path: load_dot_env_file(dot_env_path) project_name = args.startproject if project_name: project_path = os.path.join(os.getcwd(), project_name) create_scaffold(project_path) exit(0) result = HttpRunner( args.testset_paths, failfast=args.failfast).run(html_report_name=args.html_report_name) print_output(result["output"]) return 0 if result["success"] else 1
def run_testcase(instance, testcase_dir_path): # 运行函数 runner = HttpRunner() try: runner.run(testcase_dir_path) except Exception as e: res = { "ret": False, "msg": "用例执行失败", "log": e } return Response(res, status=400) # 生成报告获取报告id report_id = create_report(runner, instance.name) # 用例运行完毕后返回报告id data = { "id": report_id } return Response(data, status=201)
def run_testcase(instance, testcase_dir_path, is_email=False, email='', debug=False): """ 运行用例 :return: :param instance: 实例 :param testcase_dir_path: 用例根目录路径 :return dict """ runner = HttpRunner() # runner.run(testcase_dir_path) try: runner.run(testcase_dir_path) except ParamsError: logger.error("用例参数有误") data = { "msg": "用例参数有误" } return Response(data, status=400) runner.summary = timestamp_to_datetime(runner.summary, type=False) if debug: return runner.summary try: report_name = instance.name except Exception as e: report_name = '被遗弃的报告' + '-' + datetime.strftime(datetime.now(), '%Y%m%d%H%M%S') report = create_report(runner, report_name=report_name) data_dict = { "id": report.id } if is_email: report_full_path = report.html content = "执行结果:{},用例总数:{},成功总数:{},详情请查看测试报告。" \ .format("Pass" if report.result == 1 else "Fail", report.count, report.success) send_email_text(report.name, content, report_full_path, email) return Response(data_dict, status=status.HTTP_200_OK)
def main_hrun(): """ API test: parse command line options and run commands. """ parser = argparse.ArgumentParser(description=__description__) parser.add_argument('-V', '--version', dest='version', action='store_true', help="show version") parser.add_argument('testset_paths', nargs='*', help="testset file path") parser.add_argument('--no-html-report', action='store_true', default=False, help="do not generate html report.") parser.add_argument( '--html-report-name', help= "specify html report name, only effective when generating html report." ) parser.add_argument('--html-report-template', help="specify html report template path.") parser.add_argument('--log-level', default='INFO', help="Specify logging level, default is INFO.") parser.add_argument('--log-file', help="Write logs to specified file path.") parser.add_argument( '--dot-env-path', help= "Specify .env file path, which is useful for keeping production credentials." ) parser.add_argument( '--failfast', action='store_true', default=False, help="Stop the test run on the first error or failure.") parser.add_argument('--startproject', help="Specify new project name.") parser.add_argument('--validate', nargs='*', help="Validate JSON testset format.") parser.add_argument('--prettify', nargs='*', help="Prettify JSON testset format.") args = parser.parse_args() logger.setup_logger(args.log_level, args.log_file) if is_py2: logger.log_warning(get_python2_retire_msg()) if args.version: logger.color_print("{}".format(__version__), "GREEN") exit(0) if args.validate: validate_json_file(args.validate) exit(0) if args.prettify: prettify_json_file(args.prettify) exit(0) project_name = args.startproject if project_name: project_path = os.path.join(os.getcwd(), project_name) create_scaffold(project_path) exit(0) runner = HttpRunner(failfast=args.failfast, dot_env_path=args.dot_env_path).run(args.testset_paths) if not args.no_html_report: runner.gen_html_report(html_report_name=args.html_report_name, html_report_template=args.html_report_template) summary = runner.summary print_output(summary["output"]) return 0 if summary["success"] else 1
def main_ate(testset_paths, html_report_name=None): logger.setup_logger('DEBUG') result = HttpRunner(testset_paths).run(html_report_name=html_report_name) return result
def main_ate(testset_paths, html_report_name=None): logger.setup_logger('INFO') result = HttpRunner(testset_paths, failfast=False).run(html_report_name=html_report_name) return result
def main_hrun(): """ API test: parse command line options and run commands. """ parser = argparse.ArgumentParser(description=__description__) parser.add_argument( '-V', '--version', dest='version', action='store_true', help="show version") parser.add_argument( 'testset_paths', nargs='*', help="testset file path") parser.add_argument( '--no-html-report', action='store_true', default=False, help="do not generate html report.") parser.add_argument( '--html-report-name', help="specify html report name, only effective when generating html report.") parser.add_argument( '--html-report-template', help="specify html report template path.") parser.add_argument( '--log-level', default='INFO', help="Specify logging level, default is INFO.") parser.add_argument( '--log-file', help="Write logs to specified file path.") parser.add_argument( '--dot-env-path', help="Specify .env file path, which is useful for keeping production credentials.") parser.add_argument( '--failfast', action='store_true', default=False, help="Stop the test run on the first error or failure.") parser.add_argument( '--startproject', help="Specify new project name.") parser.add_argument( '--validate', nargs='*', help="Validate JSON testset format.") parser.add_argument( '--prettify', nargs='*', help="Prettify JSON testset format.") args = parser.parse_args() logger.setup_logger(args.log_level, args.log_file) if is_py2: logger.log_warning(get_python2_retire_msg()) if args.version: logger.color_print("{}".format(__version__), "GREEN") exit(0) if args.validate: validate_json_file(args.validate) exit(0) if args.prettify: prettify_json_file(args.prettify) exit(0) project_name = args.startproject if project_name: project_path = os.path.join(os.getcwd(), project_name) create_scaffold(project_path) exit(0) runner = HttpRunner(failfast=args.failfast, dot_env_path=args.dot_env_path).run(args.testset_paths) if not args.no_html_report: runner.gen_html_report( html_report_name=args.html_report_name, html_report_template=args.html_report_template ) summary = runner.summary print_output(summary["output"]) return 0 if summary["success"] else 1