def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) env_id = serializer.validated_data.get('env_id') env = Envs.objects.get(id=env_id) testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) include = eval(instance.include) if len(include) == 0: data = {'ret': False, 'msg': '此套件下未添加接口, 无法运行'} return Response(data, status=400) # 将include中的接口id转化为此接口下的用例id include = get_testcases_by_interface_ids(include) for testcase_id in include: testcase_obj = Testcases.objects.filter(id=testcase_id).first() if testcase_obj: common.generate_testcase_file(testcase_obj, env, testcase_dir_path) return common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() response = super().create(request, *args, **kwargs) env_id = response.data.serializer.validated_data.get('env_id') testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) env = Envs.objects.filter(id=env_id).first() interfaces_qs = Interfaces.objects.filter(instance) # 判断查询集对象是否为空 if not interfaces_qs.exists(): data = {'ret': False, 'msg': '该项目下无接口存在,无法运行'} return Response(data, status=400) # 遍历所有可运行用例,并转化为列表 runner_testcases_obj = [] for interfaces_obj in interfaces_qs: testcase_qs = Testcases.objects.filter(interface=interfaces_obj) if testcase_qs.exists(): runner_testcases_obj.extend(list(testcase_qs)) if len(runner_testcases_obj) == 0: data = {'ret': False, 'msg': '该项目下无用例存在,无法运行'} return Response(data, status=400) for testcase_obj in runner_testcases_obj: # 生成yaml用例文件 common.generate_testcase_file(testcase_obj, env, testcase_dir_path) # 运行用例(生成报告) common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): # 1、取出接口的模型对象 instance = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) env_id = serializer.validated_data.get('env_id') env = Envs.objects.get(id=env_id) # 2、创建一个以时间戳命名的目录 testcase_dir_path = os.path.join(settings.SUITES_DIR, datetime.strftime(datetime.now(), "%Y%m%d%H%M%S")) os.mkdir(testcase_dir_path) # 3、获取当前接口下的所有用例 testcase_qs = Testcases.objects.filter(interface=instance) if not testcase_qs.exists(): # 如果此接口下没有用例, 则无法运行 data = { 'ret': False, 'msg': '此接口下无用例, 无法运行' } return Response(data, status=400) for testcase_obj in testcase_qs: # 4、生成用例的yaml配置文件 common.generate_testcase_file(testcase_obj, env, testcase_dir_path) # 5、运行用例并生成测试报告 return common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() response = super().create(request, *args, **kwargs) env_id = response.data.serializer.validated_data.get('env_id') testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) env = Envs.objects.filter(id=env_id).first() testsuit_include = json.loads(instance.include, encoding='utf-8') testcases_qs_list = [] for interface_id in testsuit_include: testcases_qs = Testcases.objects.filter(interface_id=interface_id) testcases_qs_list.extend(list(testcases_qs)) if len(testcases_qs_list) == 0: data = {'ret': False, 'msg': '此套件下无用例,无法运行'} return Response(data, status=400) for testcase_obj in testcases_qs_list: # 生成yaml用例文件 common.generate_testcase_file(testcase_obj, env, testcase_dir_path) # 运行用例(生成报告) return common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): instance = self.get_object() env, testcase_dir = common.get_env_dir( self.get_serializer(data=request.data)) # 3、创建用例运行的yaml文件 testcases_qs = Testcases.objects.filter(interface=instance.id) for testcase_obj in testcases_qs: common.generate_testcase_file(testcase_obj, env, testcase_dir) # 4、运行测试用例并生成报告 return yb_run_testcase.delay(instance, testcase_dir)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() response = super().create(request, *args, **kwargs) env_id = response.data.serializer.validated_data.get('env_id') testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) env = Envs.objects.filter(id=env_id).first() # 生成yaml用例文件 common.generate_testcase_file(instance, env, testcase_dir_path) # 运行用例(生成报告) common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): instance = self.get_object() # 2、创建目录 env, testcase_dir = common.get_env_dir(self.get_serializer(data=request.data)) # 3、创建用例运行需要的yaml文件 interface_qs = Interfaces.objects.filter(project=instance.id) for interface_obj in interface_qs: testcases_qs = Testcases.objects.filter(interface=interface_obj.id) for testcases_obj in testcases_qs: common.generate_testcase_file(testcases_obj, env, testcase_dir) # 4、运行测试用例并生成报告 # 使用异步框架celery,方法使用delay调用 return yb_run_testcase.delay(instance, testcase_dir)
def run(self, request, *args, **kwargs): instance = self.get_object() env, testcase_dir = common.get_env_dir( self.get_serializer(data=request.data)) # 3、创建用例运行的yaml文件 testcase_l = Testcases.objects.filter(id__in=eval(instance.include)) for testcase_obj in testcase_l: common.generate_testcase_file(testcase_obj, env, testcase_dir) # 4、运行httprunner run_task = yb_run_testcase.delay(instance, testcase_dir) # 测试作用,使用异步接口,但是前端没有做相应调整 time.sleep(5) if run_task.status == 'SUCCESS': report_id = run_task.result return Response({'id': report_id}, status=201)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() # serializer = self.get_serializer(data=request.data) # serializer.is_valid(raise_exception=True) response = super().create(request, *args, **kwargs) env_id = response.data.serializer.validated_data.get('env_id') testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) env = Envs.objects.filter(id=env_id).first() # 生成yaml用例文件 common.generate_testcase_file(instance, env, testcase_dir_path) # 运行用例(生成报告) pass
def run(self, request, *args, **kwargs): # 1、取出用例、env的模型对象 instance = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) env_id = serializer.validated_data.get('env_id') env = Envs.objects.get(id=env_id) # 2、创建一个以时间戳命名的目录 testcase_dir = os.path.join(settings.SUITES_DIR, datetime.strftime(datetime.now(), "%Y%m%d%H%M%S")) os.makedirs(testcase_dir) # 3、创建yaml用例文件 common.generate_testcase_file(instance=instance, env=env, testcase_dir=testcase_dir) # 4、运行用例并生成测试报告 return yb_run_testcase.delay(instance, testcase_dir)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() response = super().create(request, *args, **kwargs) env_id = response.data.serializer.validated_data.get('env_id') testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) env = Envs.objects.filter(id=env_id).first() testcase_objs = Testcases.objects.filter(interface=instance) if not testcase_objs.exists(): # 如果此接口下没有用例, 则无法运行 data = {'ret': False, 'msg': '此接口下无用例, 无法运行'} return Response(data, status=400) for one_obj in testcase_objs: common.generate_testcase_file(one_obj, env, testcase_dir_path) # 运行用例 return common.run_testcase(instance, testcase_dir_path)
def run(self, request, *args, **kwargs): # 取出并构造参数 instance = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) env_id = serializer.validated_data.get('env_id') env = Envs.objects.get(id=env_id) testcase_dir_path = os.path.join( settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f')) # 创建一个以时间戳命名的路径 os.mkdir(testcase_dir_path) interface_qs = Interfaces.objects.filter(project=instance) if not interface_qs.exists(): data = {'ret': False, 'msg': '此项目下无接口,无法运行'} return Response(data, status=400) runnable_testcase_obj = [] for interface_obj in interface_qs: # 当前接口项目的用例所在查询集对象 testcase_qs = Testcases.objects.filter(interface=interface_obj) if testcase_qs.exists(): # 将两个列表合并 runnable_testcase_obj.extend(list(testcase_qs)) if len(runnable_testcase_obj) == 0: data = {'ret': False, 'msg': '此项目下无用例,无法运行'} return Response(data, status=400) for testcase_obj in runnable_testcase_obj: # 生成yaml用例文件 common.generate_testcase_file(testcase_obj, env, testcase_dir_path) # 运行用例(生成报告) return common.run_testcase(instance, testcase_dir_path)