コード例 #1
0
def del_api(request):
    """
    删除接口
    project_id  项目ID
    api_ids 接口ID列表
    :return:
    """
    project_id = request.POST.get("project_id")
    if not project_id.isdecimal():
        return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
    ids = request.POST.get("api_ids")
    id_list = ids.split(",")
    for i in id_list:
        if not i.isdecimal():
            return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
    obj = Project.objects.filter(id=project_id)
    if obj:
        for j in id_list:
            obi = ApiInfo.objects.filter(id=j, project=project_id)
            if len(obi) != 0:
                name = obi[0].name
                obi.delete()
                record_dynamic(project_id, "删除", "接口", "删除接口“%s”" % name)
        return JsonResponse(code_msg=GlobalStatusCode.success())
    else:
        return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
コード例 #2
0
class AutoTestReport(APIView):
    def get(self, request):
        """
        测试结果报告
        :param request:
        :return:
        """
        project_id = request.GET.get("project_id")
        time = request.GET.get('time')
        if not project_id or not time:
            return JsonResponse(code="999996", msg="参数有误!")
        if not project_id.isdecimal():
            return JsonResponse(code="999996", msg="参数有误!")
        try:
            pro_data = Project.objects.get(id=project_id)
        except ObjectDoesNotExist:
            return JsonResponse(code="999995", msg="项目不存在!")
        pro_data = ProjectSerializer(pro_data)
        if not pro_data.data["status"]:
            return JsonResponse(code="999985", msg="该项目已禁用")
        obj = AutomationTestCase.objects.filter(project=project_id)
        if obj:
            case = Q()
            for i in obj:
                case = case | Q(automationTestCase=i.pk)
            case_data = AutomationCaseApi.objects.filter(case)
            api = Q()
            if case_data:
                for j in case_data:
                    api = api | Q(automationCaseApi=j.pk)

                data = AutomationAutoTestResultSerializer(
                    AutomationCaseTestResult.objects.filter(api,
                                                            testTime=time),
                    many=True).data
                success = 0
                fail = 0
                not_run = 0
                error = 0
                for i in data:
                    if i["result"] == "PASS":
                        success = success + 1
                    elif i["result"] == "FAIL":
                        fail = fail + 1
                    elif i["result"] == "ERROR":
                        error = error + 1
                    else:
                        not_run = not_run + 1
                return JsonResponse(code="999999",
                                    msg="成功!",
                                    data={
                                        "data": data,
                                        "total": len(data),
                                        "pass": success,
                                        "fail": fail,
                                        "error": error,
                                        "NotRun": not_run
                                    })
            else:
                return JsonResponse(code="999999", msg="成功!")
コード例 #3
0
 def get(self, request):
     """
     获取Api下载文档路径
     :param request:
     :return:
     """
     project_id = request.GET.get("project_id")
     try:
         if not project_id.isdecimal():
             return JsonResponse(code="999996", msg="参数有误!")
     except AttributeError:
         return JsonResponse(code="999996", msg="参数有误!")
     try:
         obj = Project.objects.get(id=project_id)
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(obj)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     obi = ApiGroupLevelFirst.objects.filter(project=project_id)
     data = ApiInfoDocSerializer(obi, many=True).data
     obn = ApiInfoSerializer(ApiInfo.objects.filter(project=project_id),
                             many=True).data
     url = Write().write_api(str(obj), group_data=data, data=obn)
     return JsonResponse(code="999999", msg="成功!", data=url)
コード例 #4
0
 def post(self, request):
     """
     新增项目
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     data["user"] = request.user.pk
     project_serializer = ProjectDeserializer(data=data)
     with transaction.atomic():
         if project_serializer.is_valid():
             # 保持新项目
             project_serializer.save()
             # 记录动态
             record_dynamic(project=project_serializer.data.get("id"),
                            _type="添加",
                            operationObject="项目",
                            user=request.user.pk,
                            data=data["name"])
             # 创建项目的用户添加为该项目的成员
             self.add_project_member(project_serializer.data.get("id"),
                                     request.user.pk)
             return JsonResponse(
                 data={"project_id": project_serializer.data.get("id")},
                 code_msg=GlobalStatusCode.success())
         else:
             return JsonResponse(code_msg=GlobalStatusCode.fail())
コード例 #5
0
 def post(self, request):
     """
     添加或修改邮件发送配置
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         obi = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and obi.user.is_superuser:
             return JsonResponse(code="999983", msg="无操作权限!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(obi)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     serialize = AutomationReportSendConfigDeserializer(data=data)
     if serialize.is_valid():
         try:
             obj = AutomationReportSendConfig.objects.get(
                 project=data["project_id"])
             serialize.update(instance=obj, validated_data=data)
         except ObjectDoesNotExist:
             serialize.save(project=obi)
         # 记录动态
         record_dynamic(project=data["project_id"],
                        _type="添加",
                        operationObject="邮箱",
                        user=request.user.pk,
                        data="添加邮箱配置")
         return JsonResponse(code="999999", msg="成功!")
     return JsonResponse(code="999996", msg="参数有误!")
コード例 #6
0
 def post(self, request):
     """
     启用项目配置
     :param request:
     :return:
     """
     data = request.data
     # 查找项目是否存在
     try:
         pro_data = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         obj = ProjectConfig.objects.get(id=data["config_id"],
                                         project=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999992", msg="配置不存在")
     obj.status = True
     obj.save()
     record_dynamic(project=data["project_id"],
                    _type="启用",
                    operationObject="配置",
                    user=request.user.pk,
                    data=obj.name)
     return JsonResponse(code="999999", msg="成功!")
コード例 #7
0
 def post(self, request):
     """
     修改项目
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     # 查找项目是否存在
     try:
         obj = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
     # 查找是否相同名称的项目
     obi = Project.objects.filter(name=data["name"]).exclude(
         id=data["project_id"])
     if len(obi) == 0:
         serializer = ProjectDeserializer(data=data)
         with transaction.atomic():
             if serializer.is_valid():
                 # 修改项目
                 serializer.update(instance=obj, validated_data=data)
                 # 记录动态
                 record_dynamic(project=data["project_id"],
                                _type="修改",
                                operationObject="项目",
                                user=request.user.pk,
                                data=data["name"])
                 return JsonResponse(code_msg=GlobalStatusCode.success())
             else:
                 return JsonResponse(code_msg=GlobalStatusCode.fail())
     else:
         return JsonResponse(code_msg=GlobalStatusCode.name_repetition())
コード例 #8
0
ファイル: ApiDoc.py プロジェクト: yileye/api_automation_test
 def post(self, request):
     """
     新增接口分组
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         obj = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(obj)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     serializer = ApiGroupLevelFirstDeserializer(data=data)
     if serializer.is_valid():
         serializer.save(project=obj)
     else:
         return JsonResponse(code="999998", msg="失败!")
     record_dynamic(project=serializer.data.get("id"),
                    _type="添加", operationObject="接口分组", user=request.user.pk,
                    data="新增接口分组“%s”" % data["name"])
     return JsonResponse(data={
         "group_id": serializer.data.get("id")
     }, code="999999", msg="成功!")
コード例 #9
0
def dynamic(request):
    """
    获取动态数量
    project_id  项目ID
    :return:
    """
    try:
        page_size = int(request.GET.get("page_size", 20))
        page = int(request.GET.get("page", 1))
    except (TypeError, ValueError):
        return JsonResponse(code_msg=GlobalStatusCode.page_not_int())
    project_id = request.GET.get("project_id")
    if not project_id.isdecimal():
        return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
    obi = Project.objects.filter(id=project_id)
    if obi:
        obj = ProjectDynamic.objects.filter(project=project_id).order_by("-time")
        paginator = Paginator(obj, page_size)  # paginator对象
        total = paginator.num_pages  # 总页数
        try:
            obm = paginator.page(page)
        except PageNotAnInteger:
            obm = paginator.page(1)
        except EmptyPage:
            obm = paginator.page(paginator.num_pages)
        serialize = ProjectDynamicSerializer(obm, many=True)
        return JsonResponse(data={"data": serialize.data,
                                  "page": page,
                                  "total": total
                                  }, code_msg=GlobalStatusCode.success())
    else:
        return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
コード例 #10
0
 def post(self,request):
     """
     修改项目
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     project = get_availability_project(data, request.user)
     result=all_parameter_check(data) or project_id_check(data) if isinstance(project,Project) else project
     if result:
         return result
     try:
         Project.objects.get(name=data["name"])
         return JsonResponse(code=code.CODE_EXIST_SAME_NAME)
     except ObjectDoesNotExist:
         # 更新项目
         project_serializer=ProjectDeserializer(data=data)
         with transaction.atomic():
             if project_serializer.is_valid():
                 project_serializer.update(instance=project,validated_data=data)
                 record_dynamic(project=data['project_id'], _type='修改', operation_object='项目',
                                user=request.user.pk, data=data['name'])
                 return JsonResponse(code=code.CODE_SUCCESS)
             else:
                 return JsonResponse(code=code.CODE_Failed)
コード例 #11
0
ファイル: ApiDoc.py プロジェクト: yileye/api_automation_test
 def post(self, request):
     """
     新增接口
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         obi = ApiInfo.objects.get(id=data["id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999990", msg="接口不存在!")
     obi.mockStatus = not obi.mockStatus
     obi.save()
     try:
         if obi.mockStatus:
             record_dynamic(project=data["project_id"],
                            _type="mock", operationObject="接口", user=request.user.pk,
                            data="关闭“%s”Mock" % obi.name)
         else:
             record_dynamic(project=data["project_id"],
                            _type="mock", operationObject="接口", user=request.user.pk,
                            data="启动“%s”Mock" % obi.name)
         return JsonResponse(code="999999", msg="成功!")
     except:
         return JsonResponse(code="999998", msg="失败!")
コード例 #12
0
 def post(self, request):
     """
     启用项目
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     # 查找项目是否存在
     try:
         obj = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and obj.user.is_superuser:
             return JsonResponse(code="999983", msg=str(obj) + "无操作权限!")
         obj.status = True
         obj.save()
         record_dynamic(project=data["project_id"],
                        _type="禁用",
                        operationObject="项目",
                        user=request.user.pk,
                        data=obj.name)
         return JsonResponse(code="999999", msg="成功")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
コード例 #13
0
 def post(self, request):
     """
     删除项目
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         for i in data["ids"]:
             try:
                 obj = Project.objects.get(id=i)
                 if not request.user.is_superuser and obj.user.is_superuser:
                     return JsonResponse(code="999983",
                                         msg=str(obj) + "无操作权限!")
             except ObjectDoesNotExist:
                 return JsonResponse(code="999995", msg="项目不存在!")
         for j in data["ids"]:
             obj = Project.objects.filter(id=j)
             obj.delete()
         return JsonResponse(code="999999", msg="成功")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
コード例 #14
0
def del_history(request):
    """
    删除请求历史
    project_id 项目ID
    api_id 接口ID
    history_id 请求历史ID
    :return:
    """
    project_id = request.POST.get("project_id")
    api_id = request.POST.get("api_id")
    history_id = request.POST.get("history_id")
    if not project_id.isdecimal() or not api_id.isdecimal(
    ) or not history_id.isdecimal():
        return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
    obj = Project.objects.filter(id=project_id)
    if obj:
        obi = ApiInfo.objects.filter(id=api_id, project=project_id)
        if obi:
            obm = APIRequestHistory.objects.filter(id=history_id,
                                                   apiInfo=api_id)
            if obm:
                obm.delete()
                api_record = ApiOperationHistory(
                    apiInfo=ApiInfo.objects.get(id=api_id),
                    user=User.objects.get(id=request.user.pk),
                    description="删除请求历史记录")
                api_record.save()
                return JsonResponse(code_msg=GlobalStatusCode.success())
            else:
                return JsonResponse(
                    code_msg=GlobalStatusCode.history_not_exist())
        else:
            return JsonResponse(code_msg=GlobalStatusCode.api_not_exist())
    else:
        return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
コード例 #15
0
 def post(self, request):
     """
     添加项目配置
     :param request:
     :return:
     """
     data = request.data
     try:
         obj = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(obj)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     obi = ProjectConfig.objects.filter(name=data["name"],
                                        project=data["project_id"])
     if obi:
         return JsonResponse(code="999997", msg="存在相同名称!")
     else:
         serializer = ProjectConfigSerializer(data=data)
         with transaction.atomic():
             if serializer.is_valid():
                 # 外键project_id
                 serializer.save(project=obj)
                 # 记录动态
                 record_dynamic(project=data["project_id"],
                                _type="添加",
                                operationObject="配置",
                                user=request.user.pk,
                                data=data["name"])
                 return JsonResponse(
                     data={"config_id": serializer.data.get("id")},
                     code="999999",
                     msg="成功!")
             return JsonResponse(code="999998", msg="失败!")
コード例 #16
0
 def get(self, request):
     """
     获取请求历史
     project_id 项目ID
     api_id 接口ID
     :return:
     """
     project_id = request.GET.get("project_id")
     api_id = request.GET.get("api_id")
     if not project_id.isdecimal() or not api_id.isdecimal():
         return JsonResponse(code="999996", msg="参数有误!")
     try:
         pro_data = Project.objects.get(id=project_id)
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         obj = ApiInfo.objects.get(id=api_id, project=project_id)
     except ObjectDoesNotExist:
         return JsonResponse(code="999990", msg="接口不存在!")
     history = APIRequestHistory.objects.filter(
         api=obj).order_by("-requestTime")[:10]
     data = APIRequestHistorySerializer(history, many=True).data
     return JsonResponse(data=data, code="999999", msg="成功!")
コード例 #17
0
 def post(self, request):
     """
     删除项目配置
     :param request:
     :return:
     """
     data = request.data
     try:
         pro_data = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         for j in data["ids"]:
             obj = ProjectConfig.objects.filter(id=j)
             if obj:
                 name = obj[0].name
                 obj.delete()
                 record_dynamic(project=data["project_id"],
                                _type="删除",
                                operationObject="配置",
                                user=request.user.pk,
                                data=name)
         return JsonResponse(code="999999", msg="成功!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="配置不存在!")
コード例 #18
0
 def post(self, request):
     """
     修改接口分组名称
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and pro_data.user.is_superuser:
             return JsonResponse(code="999983", msg="无操作权限!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     # 根据项目id和host id查找,若存在则删除
     obi = ApiGroupLevelFirst.objects.filter(id=data["id"],
                                             project=data["project_id"])
     if obi:
         name = obi[0].name
         obi.delete()
     else:
         return JsonResponse(code="999991", msg="分组不存在!")
     record_dynamic(project=data["project_id"],
                    _type="删除",
                    operationObject="接口分组",
                    user=request.user.pk,
                    data="删除接口分组“%s”" % name)
     return JsonResponse(code="999999", msg="成功!")
コード例 #19
0
 def post(self, request):
     """
     添加用户
     :param request:
     :return:
     """
     data = request.data
     with transaction.atomic():
         try:
             project = Project.objects.get(id=data["project_id"])
             ids = data["ids"]
             for id in ids:
                 user = User.objects.get(id=id)
                 if int(data["group"]) == 0:
                     ProjectMember.objects.filter(project=project,
                                                  user=user).delete()
                 else:
                     group = Group.objects.get(id=data["group"])
                     members = ProjectMember.objects.filter(project=project,
                                                            user=user)
                     if len(members) > 0:
                         members.update(group=group)
                     else:
                         ProjectMember.objects.create(project=project,
                                                      user=user,
                                                      group=group)
             return JsonResponse(code="999999", msg="成功!")
         except:
             logging.error(traceback.format_exc())
             return JsonResponse(code="999996", msg="执行失败!")
コード例 #20
0
 def get(self, request):
     """
     接口分组
     :param request:
     :return:
     """
     project_id = request.GET.get("project_id")
     # 校验参数
     if not project_id:
         return JsonResponse(code="999996", msg="参数有误!")
     if not project_id.isdecimal():
         return JsonResponse(code="999996", msg="参数有误!")
     # 验证项目是否存在
     try:
         pro_data = Project.objects.get(id=project_id)
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     # 序列化结果
     pro_data = ProjectSerializer(pro_data)
     # 校验项目状态
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     # 查找项目下所有接口信息,并按id排序,序列化结果
     obi = ApiGroupLevelFirst.objects.filter(
         project=project_id).order_by("id")
     serialize = ApiGroupLevelFirstSerializer(obi, many=True)
     return JsonResponse(data=serialize.data, code="999999", msg="成功!")
コード例 #21
0
 def get(self, request):
     """
     获取项目列表
     :param request:
     :return:
     """
     try:
         page_size = int(request.GET.get("page_size", 20))
         page = int(request.GET.get("page", 1))
     except (TypeError, ValueError):
         return JsonResponse(code_msg=GlobalStatusCode.page_not_int())
     name = request.GET.get("name")
     if name:
         obi = Project.objects.filter(name__contains=name).order_by("id")
     else:
         obi = Project.objects.all().order_by("id")
     paginator = Paginator(obi, page_size)  # paginator对象
     total = paginator.num_pages  # 总页数
     try:
         obm = paginator.page(page)
     except PageNotAnInteger:
         obm = paginator.page(1)
     except EmptyPage:
         obm = paginator.page(paginator.num_pages)
     serialize = ProjectSerializer(obm, many=True)
     return JsonResponse(data={
         "data": serialize.data,
         "page": page,
         "total": total
     },
                         code_msg=GlobalStatusCode.success())
コード例 #22
0
 def post(self, request):
     """
     导入swagger接口信息
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and pro_data.user.is_superuser:
             return JsonResponse(code="999983", msg="无操作权限!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         swagger_api(data["url"], data["project_id"], request.user)
         return JsonResponse(code="999999", msg="成功!")
     except Exception as e:
         logging.exception(e)
         return JsonResponse(code="999998", msg="失败!")
コード例 #23
0
 def post(self, request):
     """
     删除邮箱配置
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and pro_data.user.is_superuser:
             return JsonResponse(code="999983", msg="无操作权限!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     AutomationReportSendConfig.objects.filter(
         project=data["project_id"]).delete()
     # 记录动态
     record_dynamic(project=data["project_id"],
                    _type="删除",
                    operationObject="邮箱",
                    user=request.user.pk,
                    data="删除邮箱配置")
     return JsonResponse(code="999999", msg="成功!")
コード例 #24
0
 def post(self, request):
     """
     修改接口所属分组
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
         if not request.user.is_superuser and pro_data.user.is_superuser:
             return JsonResponse(code="999983", msg="无操作权限!")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     id_list = Q()
     for i in data["ids"]:
         id_list = id_list | Q(id=i)
     api_list = ApiInfo.objects.filter(id_list, project=data["project_id"])
     with transaction.atomic():
         api_list.update(apiGroupLevelFirst=ApiGroupLevelFirst.objects.get(
             id=data["apiGroupLevelFirst_id"]))
         name_list = []
         for j in api_list:
             name_list.append(str(j.name))
         record_dynamic(project=data["project_id"],
                        _type="修改",
                        operationObject="接口",
                        user=request.user.pk,
                        data="修改接口分组,列表“%s”" % name_list)
         return JsonResponse(code="999999", msg="成功!")
コード例 #25
0
 def get(self, request):
     """
     获取执行测试时间
     :param request:
     :return:
     """
     project_id = request.GET.get("project_id")
     if not project_id:
         return JsonResponse(code="999996", msg="参数有误!")
     if not project_id.isdecimal():
         return JsonResponse(code="999996", msg="参数有误!")
     try:
         pro_data = Project.objects.get(id=project_id)
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         data = AutomationTaskRunTimeSerializer(
             AutomationTaskRunTime.objects.filter(
                 project=project_id).order_by("-startTime")[:10],
             many=True).data
     except IndexError:
         data = AutomationTaskRunTimeSerializer(
             AutomationTaskRunTime.objects.filter(
                 project=project_id).order_by("-startTime"),
             many=True).data
     return JsonResponse(code="999999", msg="成功!", data=data)
コード例 #26
0
 def post(self, request):
     """
     添加接口请求历史
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         obj = ApiInfo.objects.get(id=data["api_id"],
                                   project=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999990", msg="接口不存在!")
     serialize = APIRequestHistoryDeserializer(data=data)
     if serialize.is_valid():
         serialize.save(api=obj)
         return JsonResponse(code="999999", msg="成功!")
     return JsonResponse(code="999998", msg="失败!")
コード例 #27
0
 def post(self, request):
     """
     删除接口请求历史
     :param request:
     :return:
     """
     data = JSONParser().parse(request)
     result = self.parameter_check(data)
     if result:
         return result
     try:
         pro_data = Project.objects.get(id=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
     pro_data = ProjectSerializer(pro_data)
     if not pro_data.data["status"]:
         return JsonResponse(code="999985", msg="该项目已禁用")
     try:
         obj = ApiInfo.objects.get(id=data["api_id"],
                                   project=data["project_id"])
     except ObjectDoesNotExist:
         return JsonResponse(code="999990", msg="接口不存在!")
     obm = APIRequestHistory.objects.filter(id=data["id"],
                                            api=data["api_id"])
     if obm:
         obm.delete()
         api_record = ApiOperationHistory(
             api=obj,
             user=User.objects.get(id=request.user.pk),
             description="删除请求历史记录")
         api_record.save()
         return JsonResponse(code="999999", msg="成功!")
     else:
         return JsonResponse(code="999988", msg="请求历史不存在!")
コード例 #28
0
 def post(self, request):
     """
     删除项目
     :param request:
     :return:
     """
     data = request.data
     result = self.parameter_check(data)
     if result:
         return result
     try:
         for i in data["ids"]:
             try:
                 obj = Project.objects.get(id=i)
             except ObjectDoesNotExist:
                 return JsonResponse(code="999995", msg="项目不存在!")
         for j in data["ids"]:
             obj = Project.objects.filter(id=j)
             obj.delete()
             my_user_cron = CronTab(user=True)
             my_user_cron.remove_all(comment=j)
             my_user_cron.write()
         return JsonResponse(code="999999", msg="成功")
     except ObjectDoesNotExist:
         return JsonResponse(code="999995", msg="项目不存在!")
コード例 #29
0
def enable_host(request):
    """
    启用host
    project_id  项目ID
    host_id 地址ID
    :return:
    """
    project_id = request.POST.get('project_id')
    host_id = request.POST.get('host_id')
    if not project_id.isdecimal() or not host_id.isdecimal():
        return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
    obj = Project.objects.filter(id=project_id)
    if obj:
        obi = GlobalHost.objects.filter(id=host_id, project=project_id)
        if obi:
            obi.update(status=True)
            record = ProjectDynamic(project=Project.objects.get(id=project_id),
                                    type='启用',
                                    operationObject='HOST',
                                    user=User.objects.get(id=request.user.pk),
                                    description='启用HOST“%s”' % obi[0].name)
            record.save()
            return JsonResponse(code_msg=GlobalStatusCode.success())
        else:
            return JsonResponse(code_msg=GlobalStatusCode.host_not_exist())
    else:
        return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
コード例 #30
0
    def get(self, request):
        """
        获取最近十次的测试数据
        project_id 项目ID
        :param request:
        :return:
        """
        project_id = request.GET.get("project_id")

        if not project_id:
            return JsonResponse(code="999996", msg="参数有误!")
        if not project_id.isdecimal():
            return JsonResponse(code="999996", msg="参数有误!")
        try:
            pro_data = Project.objects.get(id=project_id)

        except ObjectDoesNotExist:
            return JsonResponse(code="999995", msg="项目不存在!")
        pro_data = ProjectSerializer(pro_data)

        if not pro_data.data["status"]:
            return JsonResponse(code="999985", msg="该项目已禁用")
        try:
            data = AutomationTestLatelyTenTimeSerializer(
                AutomationTaskRunTime.objects.filter(
                    project=project_id).order_by("-startTime")[:10],
                many=True).data

        except IndexError:
            data = AutomationTestLatelyTenTimeSerializer(
                AutomationTaskRunTime.objects.filter(
                    project=project_id).order_by("-startTime"),
                many=True).data

        for i in data:
            result = AutomationCaseTestResult.objects.filter(
                testTime=i["startTime"])
            _pass = 0
            fail = 0
            error = 0
            for j in result:
                if j.result == "PASS":
                    _pass = _pass + 1
                elif j.result == "ERROR":
                    error = error + 1
                elif j.result == "FAIL":
                    fail = fail + 1
            total = _pass + error + fail
            if total:
                data[data.index(i)]["fail"] = "%.4f" % (fail / total)
                data[data.index(i)]["error"] = "%.4f" % (error / total)
                data[data.index(i)]["pass"] = "******" % (1 - fail / total -
                                                        error / total)

        data.reverse()

        return JsonResponse(code="999999", msg="成功!", data=data)