async def get(self, request): pk = self.request.args.get("project_id") if not pk: return resp_json(FAIL, msg="项目不存在!") code = await self.model.filter(project_id=pk) return resp_json(body=code)
async def post(self, request): project_id = request.json.get("project") pro = await models.Project.filter(pk=project_id).first() if not project_id: return resp_json(FAIL, msg="项目不存在") test_config = { "name": request.json.get("name"), "request": { "url": request.json.get("url"), "method": request.json.get("method"), "headers": request.json.get("header")["header"], "form": request.json.get("request")["form"]["data"], "json": request.json.get("request")["json"], "params": request.json.get("request")["params"]["params"], }, "extract": request.json.get("extract")["extract"], "validate": request.json.get("validate")["validate"], "setup_hooks": request.json.get("hooks")["setup_hooks"], "teardown_hooks": request.json.get("hooks")["teardown_hooks"], } result = { "name": request.json.get("name"), "body": test_config, "url": request.json.get("url"), "method": request.json.get("method"), "relation": request.json.get("nodeId"), "project": pro, } await models.API.create(**result) return resp_json(msg="接口添加成功!")
async def get(self, request): pk = self.request.args.get("project_id") if not pk: return resp_json(FAIL, msg="项目不存在!") queryset = await self.model.filter(id=pk).first() api_count = await models.API.filter(project_id=pk).count() case_count = await models.Case.filter(project_id=pk).count() config_count = await models.Config.filter(project_id=pk).count() variables_count = await models.Variables.filter(project_id=pk).count() host_count = await models.HostIP.filter(project_id=pk).count() report_count = await models.Report.filter(project_id=pk).count() data = { "id": pk, "name": queryset.name, "desc": queryset.desc, "api_count": api_count, "case_count": case_count, "config_count": config_count, "variables_count": variables_count, "host_count": host_count, "report_count": report_count, } return resp_json(body=data)
async def delete(self, request): pk = request.json.get("id") instance = await self.model.get_or_404(pk) if not instance: return resp_json(FAIL, msg="项目不存在!") await instance.delete() return resp_json(msg="操作成功!")
async def post(self, request): name = request.json.get("name", None) project_name = await self.model.filter(name=name).first() if project_name: return resp_json(FAIL, msg="项目已存在") result = { "name": name, "desc": request.json.get("desc"), "responsible": request.json.get("responsible"), } await models.Project.create(**result) return resp_json(msg="项目添加成功!")
async def post(self, request): project_id = request.json.get("project") pro = await models.Project.filter(pk=project_id).first() if not project_id: return resp_json(FAIL, msg="项目不存在") result = { "value": request.json.get("value"), "name": request.json.get("name"), "project": pro, } await models.Report.create(**result) return resp_json(msg="报告添加成功!")
async def post(self, request): project_id = request.json.get("project") pro = await models.Project.filter(pk=project_id).first() if not project_id: return resp_json(FAIL, msg="项目不存在") result = { "body": request.json, "name": request.json.get("name"), "base_url": request.json.get("base_url"), "project": pro, } await models.Config.create(**result) return resp_json(msg="项目添加成功!")
async def post(self, request): username = request.json.get("username", None) password = request.json.get("password", "") email = request.json.get("email", "") register_user = await models.UserInfo.filter(username=username).first() register_email = await models.UserInfo.filter(email=email).first() if register_user or register_email: return resp_json(FAIL, msg="用户已经存在") context = {"username": username, "password": password, "email": email} await models.UserInfo.create(**context) return resp_json(msg="用户注册成功!", body=context)
async def patch(self, request): pk = request.json.get("variableData")['id'] instance = await self.model.filter(pk=pk).first() if not instance: return resp_json(FAIL, msg="变量不存在!") instance.key = request.json.get("variableData")["key"] instance.value = request.json.get("variableData")["value"] schema = self.get_schema(request) result = schema.dump(instance) await instance.save() return resp_json(result.data)
async def get(self, request): if self.request.args.get("row"): queryset = await self.model.filter(id=self.request.args.get("row")) schema = self.get_schema(request) result = schema.dump(queryset, many=True) return resp_json(body=result.data) else: pk = self.request.args.get("project") queryset = await self.model.filter(project_id=pk) schema = self.get_schema(request) result = schema.dump(queryset, many=True) return resp_json(body=result.data)
async def post(self, request): code = request.json[0].get("code") debug = DebugCode(code) debug.run() return resp_json(msg="项目运行成功!")
async def get(self, request): queryset = await self.model.all() schema = self.get_schema(request) result = schema.dump(queryset, many=True) return resp_json(body=result.data)
async def post(self, request): project_id = request.json.get("project") pro = await models.Project.filter(pk=project_id).first() if not project_id: return resp_json(FAIL, msg="项目不存在") result = { "name": request.json.get("name"), "identity": request.json.get("data"), "status": request.json.get("switch"), "send_type": request.json.get("strategy"), "config": request.json.get("corntab"), "receiver": request.json.get("receiver"), "copy": request.json.get("copy"), "project": pro, } await models.Schedule.create(**result) return resp_json(msg="报告添加成功!")
async def post(self, request): host = await models.HostIP.filter(name=request.json.get("host") ).first() config = await models.Config.filter(name=request.json.get("config") ).first() name = request.json.get("name") back_async = request.json.get("async") relation = request.json.get("relation") pro = await models.Project.filter(pk=request.json.get("project") ).first() config_body = {} if request.json.get("config") == "请选择" else eval( config.body) test_case = [] if host != "请选择": host = await models.HostIP.get(name=host, project=pro) for relation_id in relation: api = await models.API.filter( project=request.json.get("project"), relation=relation_id).order_by("id").values("body") for content in api: api = eval(content['body']) data = { "project_mapping": { "PWD": "", "functions": {}, "env": {} }, "testcases": [] } test_struct = {"config": config_body, "teststeps": [api]} data["testcases"].append(test_struct) runner = HttpRunner(failfast=False) runner.run(data) if back_async: summary = loader.TEST_NOT_EXISTS summary["msg"] = "接口运行中,请稍后查看报告" else: summary = runner.summary result = { "name": summary["time"]["start_datetime"], "type": 1, "summary": [summary], "project": pro } await models.Report.create(**result) return resp_json(msg="报告添加成功!")
async def patch(self, request): name = request.json.get("name", None) pk = request.json.get("id") instance = await self.model.get_or_404(pk) if not instance: return resp_json(FAIL, msg="项目不存在!") if name != instance.name: if await models.Project.filter(name=name).first(): return resp_json(FAIL, msg="项目已存在!") instance.name = name instance.desc = request.json.get("desc") schema = self.get_schema(request) result = schema.dump(instance) await instance.save() return resp_json(msg="请求成功", body=result.data)
async def post(self, request): username = request.json.get("username", None) password = request.json.get("password", "") if not username and not password: return resp_json(FAIL, msg="用户名密码错误") user_obj = await models.UserInfo.filter(username=username).first() if username != user_obj.username: return resp_json(FAIL, msg="用户不存在") if password != user_obj.password: return resp_json(FAIL, msg="密码错误!") token = generate_token(username) body = { "username": username, "password": password, "token": token, } return resp_json(body=body)
async def patch(self, request): project_id = request.json.get("project_id") code = request.json.get("code") pro = await models.Project.filter(pk=project_id).first() result = { "code": code, "project": pro, } await models.DebugTalk.create(**result) return resp_json()
async def get(self, request): host = await models.HostIP.filter(name=self.request.args.get("host") ).first() name = self.request.args.get("name") pro = self.request.args.get("project") test_list = await models.CaseStep.filter( case_id__in=self.request.args.get("id") ).order_by("step").values("body") test_case = [] config = {} if host != "请选择": host = await models.HostIP.filter(name=host, project=pro) for content in test_list: body = eval(content["body"]) if "base_url" in body["request"]: config = await models.Config.filter( name=body["name"], project=request.json.get("project")) continue test_case.append(parse_host(host, body)) data = { "project_mapping": { "PWD": "", "functions": {}, "env": {} }, "testcases": [] } test_struct = {"config": config, "teststeps": test_case} data["testcases"].append(test_struct) runner = HttpRunner(failfast=False) runner.run(data) summary = runner.summary result = { "name": summary["time"]["start_datetime"], "type": 1, "summary": [summary], "project": pro } await models.Report.create(**result) return resp_json(msg="报告添加成功!")
async def get(self, request): api = await models.API.filter(id=self.request.args.get("id")).first() config = await models.Config.filter( name=self.request.args.get("config")).first() pro = await models.Project.filter(pk=api.project_id).first() debug_talk = await models.DebugTalk.filter(project_id=api.project_id ).first() variables = await models.Variables.filter(project_id=api.project_id ).values("key", "value") config_body = {} if self.request.args.get("config") == "请选择" else eval( config.body) data = { "project_mapping": { "PWD": "", "functions": {}, "env": {} }, "testcases": [] } test_struct = {"config": config_body, "teststeps": [eval(api.body)]} data["testcases"].append(test_struct) runner = HttpRunner(failfast=False) runner.run(data) summary = runner.summary result = { "name": summary["time"]["start_datetime"], "type": 1, "summary": [summary], "project": pro } await models.Report.create(**result) return resp_json(msg="报告添加成功!")
async def post(self, request): host = await models.HostIP.filter(name=request.json.get("host") ).first() config_body = await models.Config.filter( name=request.json.get("config")).first() pro = await models.Project.filter(pk=request.json.get("project") ).first() config = {} if request.json.get("config") == "请选择" else eval( config_body.body) test_config = { "name": request.json.get("name"), "request": { "url": request.json.get("url"), "method": request.json.get("method"), "headers": request.json.get("header")["header"], "form": request.json.get("request")["form"]["data"], "json": request.json.get("request")["json"], "params": request.json.get("request")["params"]["params"], }, "extract": request.json.get("extract")["extract"], "validate": request.json.get("validate")["validate"], "setup_hooks": request.json.get("hooks")["setup_hooks"], "teardown_hooks": request.json.get("hooks")["teardown_hooks"], } test_case = { "name": request.json.get("name"), "body": test_config, "url": request.json.get("url"), "method": request.json.get("method"), "relation": request.json.get("nodeId"), "project": pro, } data = { "project_mapping": { "PWD": "", "functions": {}, "env": {} }, "testcases": [] } test_struct = {"config": config, "teststeps": [test_case]} data["testcases"].append(test_struct) runner = HttpRunner(failfast=False) runner.run(data) summary = runner.summary result = { "name": summary["time"]["start_datetime"], "type": 1, "summary": [summary], "project": pro } await models.Report.create(**result) return resp_json(msg="报告添加成功!")
async def post(self, request): host = await models.HostIP.filter(name=request.json.get("host") ).first() name = request.json.get("name") back_async = request.json.get("async") relation = request.json.get("relation") pro = await models.Project.filter(pk=request.json.get("project") ).first() test_sets = [] suite_list = [] config_list = [] if host != "请选择": host = await models.HostIP.get(name=host, project=pro) for relation_id in relation: suite = await models.Case.filter( project=request.json.get("project"), relation=relation_id).order_by("id").values("id", "name") for content in suite: test_list = await models.CaseStep.filter( case_id=content["id"]).order_by("step").values("body") testcase_list = [] config = {} for content in test_list: body = eval(content['body']) if "base_url" in body["request"]: config = await models.Config.filter( name=body["name"], project=request.json.get("project")) continue testcase_list.append(parse_host(host, body)) config_list.append(parse_host(host, config)) test_sets.append(testcase_list) suite_list += suite data = { "project_mapping": { "PWD": "", "functions": {}, "env": {} }, "testcases": [] } test_struct = {"config": config, "teststeps": suite_list} data["testcases"].append(test_struct) runner = HttpRunner(failfast=False) runner.run(data) if back_async: summary = loader.TEST_NOT_EXISTS summary["msg"] = "接口运行中,请稍后查看报告" else: summary = runner.summary result = { "name": summary["time"]["start_datetime"], "type": 1, "summary": [summary], "project": pro } await models.Report.create(**result) return resp_json(msg="报告添加成功!")