Example #1
0
def runcase(request):
    try:
        if request.method != 'POST':
            return JsonResponse(ResultSet(0, '请求方式应该为POST').todict())
        par = request.POST
        type = par.getlist('type')
        id = par.getlist('id')
        if not type or type[0] == '':
            return JsonResponse(ResultSet(0, 'type参数必填').todict())
        ids = id[0].split(',') if id and id[0] != '' else []
        if type[0] == 'case':
            testplan = TestPlane()
            objlist = models.test_case.objects.filter(
                isactive=1) if ids == [] else models.test_case.objects.filter(
                    id__in=ids)
            tclist = []
            for obj in objlist:
                testcase = model_to_dict(obj)
                testcase.update(
                    {"url": obj.interface.sys.host + obj.interface.url})
                tclist.append(testcase)
                httphelper.sendrequest(tclist)
            for tc in tclist:
                tc.pop('url')
                if not isinstance(tc["response"], (dict, list)):
                    tc["response"] = tc["response"][:10000]  #防止超长
                models.test_case.objects.filter(id=tc['id']).update(**tc)

            testplan.calc([{'name': '手动执行', 'testcase': tclist}])
            httphelper.createreport(testplan)
            return JsonResponse(ResultSet(1).todict())
        else:
            return JsonResponse(ResultSet(0, 'type不正确').todict())
    except Exception as e:
        return JsonResponse(ResultSet(0, str(e)).todict())
Example #2
0
def userlogin(request):
    username = request.POST.get('username')
    password = request.POST.get('password')
    rdurl = request.POST.get('next')
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            ulogin(request, user)
            return JsonResponse(ResultSet(1, '', {'url': rdurl}).todict())
        else:
            return JsonResponse(ResultSet(0, '用户未激活!').todict())
    else:
        return JsonResponse(ResultSet(0, '账号/密码错误!').todict())
Example #3
0
def ifmanage(request):
    try:
        page = request.GET.get('page')
        ifname = request.GET.get('ifname')
        url = request.GET.get('url')
        sysid = request.GET.get('sysid')
        remark = request.GET.get('remark')

        contact_list = models.ifmanage.objects.all().order_by('-id')
        if ifname == None or ifname == '':
            ifname = ''
        else:
            contact_list = contact_list.filter(ifname__icontains=ifname)
        if url == None or url == '':
            url = ''
        else:
            contact_list = contact_list.filter(url__icontains=url)
        if sysid == None or sysid == '0':
            sysid = 0
        else:
            sysid = int(sysid)
            contact_list = contact_list.filter(sys=sysid)
        if remark == None or remark == '':
            remark = ''
        else:
            contact_list = contact_list.filter(remark__icontains=remark)

        filter = {
            'ifname': ifname,
            'url': url,
            'sysid': sysid,
            'remark': remark
        }
        testsys = models.sysconfig.objects.values('id', 'sysname').distinct()
        paginator = Paginator(contact_list, 10)  # 每页20条
        try:
            contacts = paginator.page(page)  # contacts为Page对象!
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            contacts = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            contacts = paginator.page(paginator.num_pages)

        user = request.user
        userhost = models.user_host.objects.filter(user=user.id)
        hostid = userhost.values_list('sys', flat=True)
        return render(
            request,
            'interfacetest/iframe/interface_management.html',
            {
                'contacts': contacts,
                'testsys': testsys,
                'filter': filter,
                'userhost': userhost,
                'hostid': hostid
            },
        )
    except Exception as e:
        return JsonResponse(ResultSet(0, str(e)).todict())
Example #4
0
def getdata(request):
    try:
        if request.method != 'GET':
            return JsonResponse(data=ResultSet(0, '请求方式应该为GET').todict(),
                                charset='utf-8')
        par = request.GET
        type = par.getlist('type')
        if not type or type[0] == '':
            return JsonResponse(ResultSet(0, 'type参数必填').todict(),
                                content_type='application/json;charset=utf-8')
        if type[0] == 'testcase':  #只获取第一个作为type参数
            ids = par.getlist('ids')[0].split(',')
            data = []
            for id in ids:
                try:
                    objlist = []
                    for obj in models.test_case.objects.filter(
                            interface_id=id).order_by('-id'):
                        objlist.append(model_to_dict(obj))
                    result = ResultSet(1, '', objlist).todict()
                except Exception as e:
                    result = ResultSet(0, str(e)).todict()
                data.append(result)
            return JsonResponse(data, safe=False)
        else:
            return JsonResponse(ResultSet(0, 'type参数有误').todict())
    except Exception as e:
        return JsonResponse(ResultSet(0, str(e)).todict(), encoder='utf-8')
Example #5
0
def postdata(request):
    try:
        if request.method != 'POST':
            return JsonResponse(ResultSet(0, '请求方式应该为POST').todict())
        par = request.POST
        type = par.getlist('type')
        act = par.getlist('act')
        if not (type and act):
            return JsonResponse(ResultSet(0, 'type、act参数必填').todict())
        if type[0] == '' or act[0] == '':
            return JsonResponse(ResultSet(0, 'type、act参数不能为空字符串').todict())
        if type[0] == 'settings':  #只获取第一个参数
            sysname = par.getlist('sysname')
            id = par.getlist('id')
            if act[0] == 'add':
                if not sysname:
                    return JsonResponse(
                        ResultSet(0, '添加数据sysname参数必填').todict())
                if sysname[0] == '':
                    return JsonResponse(
                        ResultSet(0, 'sysname参数不能为空字符串').todict())
                data = {
                    'sysname':
                    sysname[0],
                    'host': (par.getlist('host')) and par.getlist('host')[0]
                    or '',
                    'remark':
                    (par.getlist('remark')) and (par.getlist('remark')[0])
                    or ''
                }
                models.sysconfig.objects.create(**data)
                return JsonResponse(ResultSet(1).todict())
            elif act[0] == 'alter':
                if not sysname:
                    return JsonResponse(
                        ResultSet(0, '修改数据sysname参数必填').todict())
                if sysname[0] == '':
                    return JsonResponse(
                        ResultSet(0, 'sysname参数不能为空字符串').todict())
                if not id:
                    return JsonResponse(ResultSet(0, '修改数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                data = {
                    'sysname':
                    sysname[0],
                    'host': (par.getlist('host')) and par.getlist('host')[0]
                    or '',
                    'remark':
                    (par.getlist('remark')) and (par.getlist('remark')[0])
                    or '',
                    'last_update_date':
                    datetime.datetime.now()
                }
                models.sysconfig.objects.filter(id=id[0]).update(**data)
                return JsonResponse(ResultSet(1).todict())
            elif act[0] == 'delete':
                if not id:
                    return JsonResponse(ResultSet(0, '添加数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                ids = id[0].split(',')
                models.sysconfig.objects.filter(id__in=ids).delete()
                return JsonResponse(ResultSet(1).todict())
            else:
                return JsonResponse(ResultSet(0, 'act参数有误').todict())
        if type[0] == 'ifmanage':
            ifname = par.getlist('ifname')
            id = par.getlist('id')
            sysid = par.getlist('sysid')
            if act[0] == 'add':
                if not ifname:
                    return JsonResponse(ResultSet(0, '添加数据接口名必填').todict())
                if ifname[0] == '':
                    return JsonResponse(ResultSet(0, '接口名不能为空').todict())
                if not sysid:
                    return JsonResponse(ResultSet(0, '添加数据测试系统必选').todict())
                if sysid[0] == '':
                    return JsonResponse(ResultSet(0, '测试系统不能为空').todict())
                data = {
                    'ifname':
                    ifname[0],
                    'sys':
                    models.sysconfig.objects.get(id=sysid[0]),
                    'url': (par.getlist('url')) and par.getlist('url')[0]
                    or '',
                    'remark':
                    (par.getlist('remark')) and (par.getlist('remark')[0])
                    or ''
                }
                models.ifmanage.objects.create(**data)
                return JsonResponse(ResultSet(1).todict())
            elif act[0] == 'alter':
                if not ifname:
                    return JsonResponse(ResultSet(0, '修改数据接口名必填').todict())
                if ifname[0] == '':
                    return JsonResponse(ResultSet(0, '接口名不能为空').todict())
                if not sysid:
                    return JsonResponse(ResultSet(0, '修改数据测试系统必选').todict())
                if sysid[0] == '':
                    return JsonResponse(ResultSet(0, '测试系统不能为空').todict())
                if not id:
                    return JsonResponse(ResultSet(0, '修改数据id必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id不能为空').todict())

                data = {
                    'id':
                    id[0],
                    'ifname':
                    ifname[0],
                    'sys':
                    models.sysconfig.objects.get(id=sysid[0]),
                    'url': (par.getlist('url')) and par.getlist('url')[0]
                    or '',
                    'remark':
                    (par.getlist('remark')) and (par.getlist('remark')[0])
                    or '',
                    'last_update_date':
                    datetime.datetime.now()
                }
                models.ifmanage.objects.filter(id=id[0]).update(**data)
                return JsonResponse(ResultSet(1).todict())
            elif act[0] == 'delete':
                if not id:
                    return JsonResponse(ResultSet(0, '删除数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                ids = id[0].split(',')
                models.ifmanage.objects.filter(id__in=ids).delete()
                return JsonResponse(ResultSet(1).todict())
        if type[0] == 'user':
            if act[0] == 'url':
                ruser = request.user
                if ruser.id == None:
                    return JsonResponse(ResultSet(0, '请先登录').todict())
                urls = json.loads(par.getlist('urls')[0])
                if urls == {}: return JsonResponse(ResultSet(1).todict())
                for url in urls:
                    obj = models.user_host.objects.filter(user=ruser.id,
                                                          sys=url)
                    if obj.count() > 0:
                        obj.update(
                            **{
                                'host': urls[url],
                                'last_update_date': datetime.datetime.now()
                            })
                    else:
                        sys = models.sysconfig.objects.get(id=url)
                        user = User.objects.get(id=ruser.id)
                        data = {"user": user, "sys": sys, "host": urls[url]}
                        models.user_host.objects.create(**data)
                return JsonResponse(ResultSet(1).todict())
        if type[0] == 'testcase':
            id = par.getlist('id')
            if act[0] == 'add':
                interfaceid = par.getlist('interfaceid')
                if not interfaceid:
                    return JsonResponse(
                        ResultSet(0, 'interfaceid参数有误1').todict())
                if interfaceid[0] == '':
                    return JsonResponse(
                        ResultSet(0, 'interfaceid参数有误2').todict())
                data = {
                    'interface':
                    models.ifmanage.objects.get(id=int(interfaceid[0])),
                    'method': (par.getlist('method')) and
                    (par.getlist('method')[0]) or 1,
                    'param': (par.getlist('param')) and par.getlist('param')[0]
                    or '',
                    'header':
                    (par.getlist('header')) and par.getlist('header')[0] or '',
                    'body': (par.getlist('body')) and par.getlist('body')[0]
                    or '',
                    'cookie':
                    (par.getlist('cookie')) and par.getlist('cookie')[0] or '',
                    'expect':
                    (par.getlist('expect')) and par.getlist('expect')[0] or '',
                    'isdefault':
                    (par.getlist('isdefault')) and par.getlist('isdefault')[0]
                    or 0,
                    'isactive':
                    (par.getlist('isactive')) and par.getlist('isactive')[0]
                    or 1,
                    'remark':
                    (par.getlist('remark')) and par.getlist('remark')[0] or 1,
                }
                case = models.test_case.objects.filter(
                    interface=interfaceid[0], isdefault=1)
                if case.count() > 0 and int(par.getlist('isdefault')[0]):
                    data['last_update_date'] = datetime.datetime.now()
                    case.update(**data)
                else:
                    models.test_case.objects.create(**data)
                return JsonResponse(ResultSet(1).todict())
            if act[0] == 'alter':
                if not id:
                    return JsonResponse(ResultSet(0, '修改数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                data = {
                    'id':
                    id[0],
                    'method': (par.getlist('method')) and
                    (par.getlist('method')[0]) or 1,
                    'param': (par.getlist('param')) and par.getlist('param')[0]
                    or '',
                    'header':
                    (par.getlist('header')) and par.getlist('header')[0] or '',
                    'body': (par.getlist('body')) and par.getlist('body')[0]
                    or '',
                    'cookie':
                    (par.getlist('cookie')) and par.getlist('cookie')[0] or '',
                    'expect':
                    (par.getlist('expect')) and par.getlist('expect')[0] or '',
                    'isdefault':
                    (par.getlist('isdefault')) and par.getlist('isdefault')[0]
                    or 0,
                    'isactive':
                    (par.getlist('isactive')) and par.getlist('isactive')[0]
                    or 1,
                    'remark':
                    (par.getlist('remark')) and par.getlist('remark')[0] or '',
                    'last_update_date':
                    datetime.datetime.now(),
                }
                if par.getlist('isdefault') and int(
                        par.getlist('isdefault')[0]):
                    interface = models.ifmanage.objects.get(
                        id=par.getlist('interfaceid')[0])
                    models.test_case.objects.filter(
                        interface=interface).update(isdefault=0)
                models.test_case.objects.filter(id=id[0]).update(**data)
                return JsonResponse(ResultSet(1).todict())
            if act[0] == 'delete':
                if not id:
                    return JsonResponse(ResultSet(0, '删除数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                ids = id[0].split(',')
                models.test_case.objects.filter(id__in=ids).delete()
                return JsonResponse(ResultSet(1).todict())
        else:
Example #6
0
                    interface = models.ifmanage.objects.get(
                        id=par.getlist('interfaceid')[0])
                    models.test_case.objects.filter(
                        interface=interface).update(isdefault=0)
                models.test_case.objects.filter(id=id[0]).update(**data)
                return JsonResponse(ResultSet(1).todict())
            if act[0] == 'delete':
                if not id:
                    return JsonResponse(ResultSet(0, '删除数据id参数必填').todict())
                if id[0] == '':
                    return JsonResponse(ResultSet(0, 'id参数不能为空字符串').todict())
                ids = id[0].split(',')
                models.test_case.objects.filter(id__in=ids).delete()
                return JsonResponse(ResultSet(1).todict())
        else:
            return JsonResponse(ResultSet(0, 'type参数有误').todict())
    except Exception as e:
        return JsonResponse(ResultSet(0, str(e)).todict())


def runcase(request):
    try:
        if request.method != 'POST':
            return JsonResponse(ResultSet(0, '请求方式应该为POST').todict())
        par = request.POST
        type = par.getlist('type')
        id = par.getlist('id')
        if not type or type[0] == '':
            return JsonResponse(ResultSet(0, 'type参数必填').todict())
        ids = id[0].split(',') if id and id[0] != '' else []
        if type[0] == 'case':