def data(key="",alltype="",value=""):#这个是data信息封装方法 if isinstance(key, list) and isinstance(alltype,list) and isinstance(value, list): try: all_list={} lenlist=len(key) for i in range(0,lenlist): if alltype[i] == "string": a = str(value[i]) all_list[key[i]]=a elif (alltype[i] == "int"): a = int(value[i]) all_list[key[i]] = a elif (alltype[i] == "list"): a = eval(value[i]) all_list[key[i]] = a elif (alltype[i] == "dict"): a = eval(value[i]) all_list[key[i]] = a elif (alltype[i] == "mysql"): pat = "\¥\[(\d+)\]" req = re.findall(pat, value[i]) true_number = Mysql_command.objects.filter(number=req[0]).exists() if true_number: result = Mysql_command.objects.filter(number=req[0]).values('result') for a in result: value1 = a["result"] else: print("出现错误") all_list[key[i]] = value1 return all_list except Exception as e: pass else: return restful.params_error("您添加的接口用例格式错误!")
def edit_url(request): id=request.POST.get("id") if id: form = Cms_url(request.POST) if form.is_valid(): print("我已经执行6") host_name = form.cleaned_data.get("host_name") host_url = form.cleaned_data.get("host_url") describe = form.cleaned_data.get("describe") url_id = Urlconfiguratin.objects.filter(pk=id) if url_id: confirm = Urlconfiguratin.objects.filter(host_name=host_name).exclude(id=id).exists() print("===我已执行==") if confirm: return restful.unauth(message="您输入的环境名称已存在!") else: print("===执行不存在的项目=") url_id1= url_id.update(id=id,host_name=host_name, host_url=host_url,describe=describe) return restful.result(message="编辑环境配置成功!") else: return restful.unauth(message="您输入id不存在!") else: print("我已经执行8") errors = form.get_errors() return restful.params_error(message=errors) else: return restful.unauth(message="id号不能为空")
def get_value(req="",key=""):#断言获取接口的返回值,或提取参数操作 if isinstance(key,list): try: all_list=[] lenlist=len(key) valuelist1=[] for i in range(0,lenlist): str1=key[i] valuelist=str1.split(".") for i in valuelist: try: valuelist1.append(int(i)) except: valuelist1.append(i) valuelen=len(valuelist1) if valuelen==0: pass elif (valuelen==1): all_list.append(req[valuelist1[0]]) elif (valuelen ==2): all_list.append(req[valuelist1[0]][valuelist1[1]]) elif (valuelen ==3): all_list.append(req[valuelist1[0]][valuelist1[1]][valuelist1[2]]) elif (valuelen == 4): all_list.append(req[valuelist1[0]][valuelist1[1]][valuelist1[2]][valuelist1[3]]) else: return restful.unauth(message="断言匹配参数最多支持4个往下取值操作!") return all_list except Exception as e: pass else: return restful.params_error("您添加的接口用例格式错误!")
def assertion(key="",alltype="",value=""):#断言方法封装 if isinstance(key, list) and isinstance(alltype, list) and isinstance(value, list): try: all_list=[] lenlist=len(key) for i in range(0, lenlist): if alltype[i] == "等于": if isinstance(key[i], int): if key[i] == int(value[i]): all_list.append("pass") else: all_list.append("fail") else: if key[i] == value[i]: all_list.append("pass") else: all_list.append("fail") elif (alltype[i] == "包含"): if value[i] in key[i]: all_list.append("pass") else: all_list.append("fail") if "fail" in all_list: return "fail" else: return "pass" except Exception as e: pass else: return restful.params_error("您添加的接口用例格式错误!")
def add_item(request): #添加项目的视图 forms = Cms_projectInfo(request.POST) if forms.is_valid(): project_name = forms.cleaned_data.get("project_name") responsible_name = forms.cleaned_data.get("responsible_name") test_user = forms.cleaned_data.get("test_user") dev_user = forms.cleaned_data.get("dev_user") publish_app = forms.cleaned_data.get("publish_app") simple_desc = forms.cleaned_data.get("simple_desc") other_desc = forms.cleaned_data.get("other_desc") id = request.session.get("_auth_user_id") a = request.session.keys() print(id) print(a) user_id = User.objects.filter(pk=id).exists() if user_id: confirm = ProjectInfo.objects.filter( project_name=project_name).exists() if confirm: return restful.result(message="此项目名称已存在!") else: iteme = ProjectInfo(project_name=project_name, responsible_name=responsible_name, test_user=test_user, dev_user=dev_user, publish_app=publish_app, simple_desc=simple_desc, other_desc=other_desc) iteme.user_id = id iteme.save() return restful.result(message="添加项目成功!") else: errors = forms.get_errors() return restful.params_error(message=errors)
def extract_parameter(req="",value=""):#提取接口的值 try: if isinstance(value,list): pass else: return restful.params_error("您添加的接口用例格式错误!") except Exception as e: pass
def header(key="",value=""):#这个是请求信息封装方法 if isinstance(key,list) and isinstance(value,list): try: all_list=zip(key,value)#使用zip方法进行压缩 return dict(all_list)#然后使用dict进行转字典 except Exception as e: pass else: return restful.params_error("您添加的接口用例格式错误!")
def delete_module(request): #删除模块视图 id = request.POST.get("id") if id: url_id = ModuleInfo.objects.get(pk=id) url_id1 = url_id.usecase_set.all() if url_id1: return restful.params_error(message="此模块已被其他用例关联,不能删除!") else: if url_id: url_id.delete() return restful.result(message="删除模块成功!") else: return restful.unauth(message="该id不存在!") else: return restful.unauth(message="请输入项目id!")
def post(self,request,*args,**kwargs): form = LoginForm(request.POST) if form.is_valid(): telephone = form.cleaned_data.get("telephone") password = form.cleaned_data.get("password") pwd=base64.b64decode(password).decode("utf-8") remember = form.cleaned_data.get("remember") user = authenticate(request, username=telephone, password=pwd) if user: if user.is_active: login(request, user) if remember: request.session.set_expiry(None) else: request.session.set_expiry(0) return restful.result(message="登录成功") else: # 用户不使用执行下面代码 return restful.unauth(message="您的账号已被冻结") else: return restful.params_error(message={"password": ["您输入的账号或密码错误"]}) else: errors = form.get_errors() return restful.params_error(message=errors)
def delete_item(request): #删除项目视图 id = request.POST.get("id") if id: item_id = ProjectInfo.objects.filter( id=id).prefetch_related("moduleInfo") for url_id in item_id: if url_id: return restful.params_error(message="此项目已被其他模块关联,不能删除!") else: if item_id: item_id.delete() return restful.result(message="删除项目成功!") else: return restful.unauth(message="该id不存在!") else: return restful.unauth(message="请输入项目id!")
def edit_function(request): #运行多条用例的视图 userid = request.session.get("_auth_user_id") id = request.POST.get("id") if id: all_edit = ProjectInfo.objects.get(pk=id) if all_edit: data_times = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) run_multiple_use_cases.delay(id=id, userid=userid, data_times=data_times) return restful.result(message="已运行成功!") else: return restful.unauth(message="此项目id不存在!") else: return restful.params_error(message="请输入正确的用例id!")
def delete_url(request): id=request.POST.get("id") if id: url_id=Urlconfiguratin.objects.get(pk=id) url_id1=url_id.usecase_set.all() if url_id1: return restful.params_error(message="此环境已被其他用例关联,不能删除!") else: print("我已执行") if url_id: url_id.delete() print("====已执行====") return restful.result(message="删除环境成功!") else: return restful.unauth(message="该id不存在!") else: return restful.unauth(message="请输入环境id!")
def read_req(key="",req_ode=""):#提取参数 if isinstance(key, list): key_list=len(key) req_list=[] for i in range(0,key_list): try: pat="'{}': '(.*?)'".format(key[i]) print(pat) req=re.findall(pat,str(req_ode)) print(key[i]) req_list.append(req[0]) except: pat = "'{}': (.*?),".format(key[i]) req = re.findall(pat,str(req_ode)) if req==[]: pass else: req_list.append(req[0]) return req_list else: return restful.params_error("您的提取参数不是列表!")
def edit_module(request): #编辑项目视图 id = request.POST.get("id") if id: forms = Cms_Moudle(request.POST) if forms.is_valid(): module_name = forms.cleaned_data.get("module_name") test_user = forms.cleaned_data.get("test_user") belong_project = request.POST.get("belong_project") simple_desc = forms.cleaned_data.get("simple_desc") other_desc = forms.cleaned_data.get("other_desc") module_order = forms.cleaned_data.get("module_order") module_id = ModuleInfo.objects.filter(pk=id) if module_id: confirm = ModuleInfo.objects.filter( module_name=module_name).exclude(id=id).exists() if confirm: return restful.unauth(message="您输入的项目名称已存在!") else: all_true = ModuleInfo.objects.filter( belong_project_id=belong_project).exclude( id=id).filter(module_order=module_order).exists() if all_true: return restful.unauth(message="模块运行顺序已存在!") else: module_id1 = module_id.update( id=id, module_name=module_name, test_user=test_user, belong_project_id=belong_project, simple_desc=simple_desc, other_desc=other_desc, module_order=module_order) return restful.result(message="编辑项目成功!") else: return restful.unauth(message="您输入id不存在!") else: errors = forms.get_errors() return restful.params_error(message=errors) else: return restful.unauth(message="id号不能为空")
def add_url(request):#添加环境视图 form= Cms_url(request.POST) if form.is_valid(): host_name=form.cleaned_data.get("host_name") host_url=form.cleaned_data.get("host_url") describe=form.cleaned_data.get("describe") id = request.session.get("_auth_user_id") a = request.session.keys() user_id = User.objects.filter(pk=id).exists() if user_id: confirm = Urlconfiguratin.objects.filter(host_name=host_name).exists() if confirm: return restful.unauth(message="此环境名称已存在!") else: url= Urlconfiguratin(host_name=host_name, host_url=host_url, describe=describe) url.user_id = id url.save() return restful.result(message="添加环境成功!") else: errors = form.get_errors() return restful.params_error(message=errors)
def edit_item(request): #编辑项目视图 id = request.POST.get("id") if id: forms = Cms_projectInfo(request.POST) if forms.is_valid(): project_name = forms.cleaned_data.get("project_name") responsible_name = forms.cleaned_data.get("responsible_name") test_user = forms.cleaned_data.get("test_user") dev_user = forms.cleaned_data.get("dev_user") publish_app = forms.cleaned_data.get("publish_app") simple_desc = forms.cleaned_data.get("simple_desc") other_desc = forms.cleaned_data.get("other_desc") item_id = ProjectInfo.objects.filter(pk=id) for i in item_id: print(i.project_name) print(other_desc) if item_id: confirm = ProjectInfo.objects.filter( project_name=project_name).exclude(id=id).exists() if confirm: return restful.unauth(message="您输入的项目名称已存在!") else: item_id1 = item_id.update( id=id, project_name=project_name, responsible_name=responsible_name, test_user=test_user, dev_user=dev_user, publish_app=publish_app, simple_desc=simple_desc, other_desc=other_desc) return restful.result(message="编辑项目成功!") else: return restful.unauth(message="您输入id不存在!") else: errors = forms.get_errors() return restful.params_error(message=errors) else: return restful.unauth(message="id号不能为空")
def add_module(request): #添加模块视图 forms = Cms_Moudle(request.POST) if forms.is_valid(): module_name = forms.cleaned_data.get("module_name") test_user = forms.cleaned_data.get("test_user") belong_project = request.POST.get("belong_project") simple_desc = forms.cleaned_data.get("simple_desc") other_desc = forms.cleaned_data.get("other_desc") module_order = forms.cleaned_data.get("module_order") id = request.session.get("_auth_user_id") a = request.session.keys() is_module = ProjectInfo.objects.filter(pk=int(belong_project)) is_case_url = is_module.filter( moduleInfo__module_order=module_order).exists() if is_case_url: # 如果存在执行下面代码 return restful.unauth(message="此用例运行顺序已存在!") else: user_id = User.objects.filter(pk=id).exists() if user_id: confirm = ModuleInfo.objects.filter( module_name=module_name).exists() if confirm: return restful.unauth(message="此模块名称已存在!") else: iteme = ModuleInfo(module_name=module_name, test_user=test_user, simple_desc=simple_desc, other_desc=other_desc, module_order=module_order) iteme.user_id = id iteme.belong_project_id = int(belong_project) iteme.save() return restful.result(message="添加模块成功!") else: errors = forms.get_errors() return restful.params_error(message=errors)
def edit_details(request): userid = request.session.get("_auth_user_id") id = request.POST.get("id") if id: all_edit = ProjectInfo.objects.get(pk=id) if all_edit: module_prefetch = Prefetch( "moduleInfo", queryset=ModuleInfo.objects.order_by("module_order")) use_prefetch = Prefetch( "usecase_set", queryset=Usecase.objects.order_by("case_order")) operation = Prefetch( "operation_information_set", queryset=operation_information.objects.filter( use_case_mode="many").order_by("-data_time")) module_data = ProjectInfo.objects.filter( id=id).prefetch_related(module_prefetch) use_data = ModuleInfo.objects.prefetch_related(use_prefetch) use_case = Usecase.objects.prefetch_related(operation) a = operation_information.objects.filter( use_case_mode="many").order_by("-data_time") print(a.exists()) all_result = [] for i in module_data: print(i.project_name) module_all = i.moduleInfo.all() if module_all: for sub_data in module_all: for use_data_all in use_data: if sub_data.module_name == use_data_all.module_name: print(use_data_all.module_name) usecase_data_all = use_data_all.usecase_set.all( ) if usecase_data_all: usecase2 = use_data_all.usecase_set.count() print("======") print(usecase2) else: usecase2 = 0 if usecase_data_all: for usecase in usecase_data_all: for use_ca in use_case: if usecase.case_name == use_ca.case_name: result = [] operation_all = use_ca.operation_information_set.all( ) print("333333") print(len(operation_all)) if operation_all: if len(operation_all) == 1: serializer = operation_informationSerializer( operation_all, many=True) data = serializer.data[ -1] all_result.append(data) print("hahah") else: serializer = operation_informationSerializer( operation_all, many=True) data = list( reversed( serializer.data ))[-1] all_result.append(data) else: pass else: #不存在关联用例执行下面 pass else: #不存在关联模块执行下面 pass return restful.result(data=all_result, message="请求成功!") else: return restful.unauth(message="此项目id不存在!") else: return restful.params_error(message="请输入正确的用例id!")