Beispiel #1
0
 def post(self):
     _name = '测试用例'
     case = get_values('id', post=True)
     if isinstance(case, list):
         for g in case:
             if Wait.query.filter(
                     Wait.testcase_id == g.get('id')).count() > 0:
                 wait = Wait.query.filter(
                     Wait.testcase_id == g.get('id')).first()
                 db.session.delete(wait)
             case_group = TestCases.query.get(g.get('id'))
             db.session.delete(case_group)
         db.session.commit()
         return jsonify(msg='删除{}列表成功'.format(_name))
Beispiel #2
0
 def get(self):
     username = get_values('username')
     user_count = User.query.filter(User.username == username).count()
     if user_count != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #3
0
    def post(self):
        search, user_id, page, pagesize, _id = get_values(
            'search', 'user_id', 'page', 'pagesize', 'id')
        if _id:
            _list = TestCaseScene.query.get(_id).to_dict()
            return jsonify({'list': _list})
        user = User.query.get(user_id)
        _list = TestCaseScene.query.filter(
            TestCaseScene.user_id == user_id).order_by(
                TestCaseScene.timestamp.desc(),
                TestCaseScene.id.desc()).limit(pagesize).offset(
                    pagesize * (page - 1)).all()
        count = TestCaseScene.query.filter(
            TestCaseScene.user_id == user_id).order_by(
                TestCaseScene.timestamp.desc(),
                TestCaseScene.id.desc()).count()
        model_scenes = TestCaseScene.query.filter(
            TestCaseScene.is_model == 1,
            TestCaseScene.user_id == user_id).all()
        model_cases = TestCases.query.filter(
            TestCases.is_model == 1, TestCases.user_id == user_id).all()
        case_groups = user.user_case_groups
        case_groups, model_scenes, model_cases = all_to_dict(
            _list, case_groups, model_scenes, model_cases, model=TestCaseScene)

        return jsonify({
            'list': _list,
            'groups': case_groups,
            'model_scenes': model_scenes,
            'model_cases': model_cases,
            'count': count
        })
Beispiel #4
0
 def get(self):
     user_id = session.get('user_id')
     old_sql_regist_variable, testcase_id = get_values(
         'old_sql_regist_variable', 'testcase_id')
     print('OldSqlVariableUpdateValidata:', old_sql_regist_variable,
           testcase_id)
     testcase = TestCases.query.get(testcase_id)
     if not old_sql_regist_variable:
         return jsonify(True)
     var = Variables.query.filter(
         Variables.name == testcase.old_sql_regist_variable,
         Variables.user_id == user_id).first()
     # print('OldSqlVariableUpdateValidata var:', var, var.id)
     if var:
         variable = Variables.query.filter(
             Variables.id != var.id,
             Variables.name == old_sql_regist_variable,
             Variables.user_id == user_id).count()
     else:
         variable = Variables.query.filter(
             Variables.name == old_sql_regist_variable,
             Variables.user_id == user_id).count()
     if variable != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #5
0
    def post(self):
        _name = '测试场景'
        scene = get_values('id')
        if isinstance(scene, list):
            for g in scene:
                _g = TestCaseScene.query.get(g.get('id'))
                cases = TestCases.query.join(TestCaseScene, TestCases.testcase_scene_id == TestCaseScene.id). \
                    filter(TestCases.testcase_scene_id == g.get('id')).all()
                if len(cases) > 0:
                    for case in cases:
                        db.session.delete(case)
                db.session.delete(_g)
            db.session.commit()
            return jsonify(msg='删除{}列表成功'.format(_name))
        _scene = TestCaseScene.query.get(scene.get('id'))
        print('scene', _scene)
        testcases = TestCases.query.join(TestCaseScene, TestCases.testcase_scene_id == TestCaseScene.id). \
            filter(TestCases.testcase_scene_id == scene.get('id')).all()

        if len(testcases) > 0:
            for testcase in testcases:
                db.session.delete(testcase)
        db.session.delete(_scene)
        db.session.commit()
        return jsonify(msg='删除{}成功'.format(_name))
Beispiel #6
0
    def get(self):
        scene_page, testcase_scene_id = get_values('scene_page',
                                                   'testcase_scene_id')
        if not testcase_scene_id or testcase_scene_id == "null":
            flash('请先设置场景模板')
            return redirect(
                url_for(
                    'testcase_scene_blueprint.testcase_scene_testcase_list',
                    page=scene_page))
        testcase_scene = TestCaseScene.query.get(testcase_scene_id)
        timestr = str(datetime.datetime.now().strftime('%Y%m%d%H%M%S'))

        if len(testcase_scene.name) > 30:
            name = testcase_scene.name[:21] + timestr
        else:
            name = testcase_scene.name + timestr
        testcase_scene_copy = TestCaseScene(
            name,
            description=testcase_scene.description,
            user_id=testcase_scene.user_id)
        db.session.add(testcase_scene_copy)
        db.session.commit()
        session['msg'] = '复制场景成功'
        return redirect(
            url_for('testcase_scene_blueprint.testcase_scene_testcase_list',
                    page=scene_page))
Beispiel #7
0
 def get(self):
     job_id, is_start = get_values('job_id', 'is_start')
     job = Job.query.get(job_id)
     job.is_start = is_start
     db.session.commit()
     scheduler_job(job)
     return 'OK'
Beispiel #8
0
def get_list(_object):
    search, user_id,  page, pagesize, _all, _id = get_values('search', 'user_id', 'page', 'pagesize', 'all', 'id')
    print('search', search, user_id,  page, pagesize, _id)
    if _id:
        data = _object.query.get(_id).get_dict()
        return jsonify({'list': data})
    if not isinstance(page, int) or page <= 0:
        page = 1
    if user_id:
        if _all:
            _list = _object.query.filter(_object.user_id == user_id, _object.name != ''). \
                order_by(_object.timestamp.desc(), _object.id.desc()).all()
            count = len(_list)

        elif _object == Variables:
            _list = _object.query.filter(_object.user_id == user_id, _object.is_private == 0). \
                order_by(_object.timestamp.desc(), _object.id.desc()).limit(pagesize).offset(pagesize*(page-1)).all()
            count = _object.query.filter(_object.user_id == user_id, _object.is_private == 0). \
                order_by(_object.timestamp.desc(), _object.id.desc()).count()
        else:
            _list = _object.query.filter(_object.user_id == user_id, _object.name != ''). \
                order_by(_object.timestamp.desc(), _object.id.desc()).limit(pagesize).offset(pagesize*(page-1)).all()
            count = _object.query.filter(_object.user_id == user_id, _object.name != ''). \
                order_by(_object.timestamp.desc(), _object.id.desc()).count()
        all_to_dict(_list)

    else:
        _list, count = [{}], 0
    return jsonify({'list': _list, 'count': count})
Beispiel #9
0
 def get(self):
     mail = None
     job_id = get_values('id')
     job = Job.query.get(job_id)
     if job.mail_id:
         mail = Mail.query.get(job.mail_id)
     auto_send_mail(job, mail, is_async=False)
     return jsonify('邮件已开始发送')
Beispiel #10
0
 def post(self):
     name, description, _id, user_id = get_values('name', 'description',
                                                  'id', 'user_id')
     return post_edit(CaseGroup,
                      _id,
                      '用例分组',
                      name=name,
                      description=description,
                      user_id=user_id)
Beispiel #11
0
 def post(self):
     user_id = session.get('user_id')
     testcases, testcase_scenes, description = get_values(
         'testcases', 'testcase_scenes', 'description')
     print('JobAdd: ', testcases, testcase_scenes)
     job = Job(testcases, testcase_scenes, description, user_id)
     db.session.add(job)
     db.session.commit()
     # app.logger.info('message:insert into SchedulerJobs success, name: %s' % name)
     return json.dumps({"job_id": str(job.id)})
Beispiel #12
0
 def post(self):
     user_id = session.get('user_id')
     name, job_id = get_values('name', 'job_id')
     print('TestCaseSceneUpdateValidate:', name, job_id)
     job = Job.query.filter(Job.id != job_id, Job.name == name,
                            Job.user_id == user_id).count()
     if job != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #13
0
 def post(self):
     name, value, description, _id, user_id = get_values(
         'name', 'value', 'description', 'id', 'user_id')
     return post_edit(Variables,
                      _id,
                      '全局变量',
                      name=name,
                      value=value,
                      description=description,
                      user_id=user_id)
Beispiel #14
0
 def post(self):
     _id, name, group_id, description, user_id = get_values(
         'id', 'name', 'group_id', 'description', 'user_id')
     return post_edit(TestCaseScene,
                      _id,
                      '测试场景',
                      name=name,
                      description=description,
                      group_id=group_id,
                      user_id=user_id)
Beispiel #15
0
 def post(self):
     username, password, project_group_id = get_values(
         'username', 'password', 'project_group')
     user = User(username, password, project_group_id)
     db.session.add(user)
     db.session.commit()
     new_user = User.query.filter(User.username == username).first().id
     # add_pre_data_go(new_user)
     session['msg'] = '注册成功'
     return 'OK'
Beispiel #16
0
def login_required():
    # print('username: '******'username'), request.path, type(session.get('username')))
    if request.path in ('/logout', '/login', '/report_email', '/case_upload'):
        return

    if not session.get('user_id') and get_values('user_id'):
        # 处理gunicorn多个导致登陆后页面有user_id,但是server没有user_id
        session['user_id'] = get_values('user_id')
    print('before', session.get('user_id'), request.path)
    s_uid = session.get('user_id')

    if not s_uid:
        return jsonify(out='请重新登录')
    if request.method == 'POST':
        user_id = get_values('user_id')
        print('post', s_uid, user_id)
        if user_id:
            if isinstance(user_id, int):
                user_id = int(user_id)
                print('uid:', user_id, type(user_id))
                if s_uid != user_id:
                    print('重新登录')
                    session['user_id'] = None
                    return jsonify(out='请重新登录')
            elif user_id.isdigit():
                if int(user_id) != s_uid:
                    session['user_id'] = None
                    return jsonify(out='请重新登录')
            else:
                session['user_id'] = None
                return jsonify(out='请重新登录')
    elif request.method == 'GET':
        user_id = get_values('user_id', post=False)
        print('uid get:', user_id, session.get('user_id'), type(user_id),
              type(session.get('user_id')))
        if user_id:
            if user_id.isdigit():
                if int(user_id) != s_uid:
                    session['user_id'] = None
                    return jsonify(out='请重新登录')
            else:
                session['user_id'] = None
                return jsonify(out='请重新登录')
Beispiel #17
0
 def get(self):
     _id = get_values('id', post=False)
     download_path, name = TestCaseStartTimes.query.get(_id).filename.split(
         '/')
     print('download_path:', download_path)
     dirpath = os.path.join(session.get('app_rootpath'), download_path)
     # 这里是下在目录,从工程的根目录写起,比如你要下载static/js里面的js文件,这里就要写“static/js”
     print('dirpath:', dirpath)
     return send_from_directory(
         dirpath, name,
         as_attachment=True)  # as_attachment=True 一定要写,不然会变成打开,而不是下载
Beispiel #18
0
 def post(self):
     search, user_id, page, pagesize, _id = get_values(
         'search', 'user_id', 'page', 'pagesize', 'id')
     print('case_list', search, user_id, page, pagesize, _id)
     if _id:
         case = TestCases.query.get(_id)
         if case.wait:
             _list = case.to_dict(case.wait[0].to_dict())
         else:
             _list = case.to_dict()
         return jsonify({'list': _list})
Beispiel #19
0
 def post(self):
     value = get_values('value')
     value = parse.unquote(value)
     try:
         if isinstance(eval(value), dict):
             return jsonify(True)
         else:
             return jsonify(False)
     except Exception as e:
         print(e)
         return jsonify(False)
Beispiel #20
0
 def post(self):
     name, description, _id, value, user_id = get_values(
         'name', 'description', 'id', 'value', 'user_id')
     print('edit', name, description)
     return post_edit(RequestHeaders,
                      _id,
                      '请求头部',
                      name=name,
                      value=value,
                      description=description,
                      user_id=user_id)
Beispiel #21
0
    def get(self):
        scene_page, testcase_scene_id, testcase_id = get_values(
            'scene_page', 'testcase_scene_id', 'testcase_id')
        if not testcase_id or testcase_id == "null":
            print('TestCaseSceneTestCaseCopy:', testcase_id, type(testcase_id))
            flash('请先设置用例模板')
            return redirect(
                url_for(
                    'testcase_scene_blueprint.testcase_scene_testcase_list',
                    page=scene_page))

        testcase = TestCases.query.get(testcase_id)

        timestr = str(datetime.datetime.now().strftime('%Y%m%d%H%M%S'))
        if len(testcase.name) > 30:
            name = testcase.name[:21] + timestr
        else:
            name = testcase.name + timestr
        testcase_new = TestCases(
            name,
            testcase.url,
            testcase.data,
            testcase.regist_variable,
            testcase.regular,
            testcase.method,
            testcase.group_id,
            testcase.request_headers_id,
            testcase_scene_id,
            testcase.hope_result,
            user_id=testcase.user_id,
            old_sql=testcase.old_sql,
            new_sql=testcase.old_sql,
            old_sql_regist_variable=testcase.old_sql_regist_variable,
            new_sql_regist_variable=testcase.new_sql_regist_variable,
            old_sql_hope_result=testcase.old_sql_hope_result,
            new_sql_hope_result=testcase.new_sql_hope_result,
            old_sql_id=testcase.old_sql_id,
            new_sql_id=testcase.new_sql_id)
        db.session.add(testcase_new)
        db.session.commit()
        session['msg'] = '复制用例成功'
        if Wait.query.filter(Wait.testcase_id == testcase.id).count() > 0:
            old_wait = Wait.query.filter(
                Wait.testcase_id == testcase.id).first()
            wait = Wait(old_wait.old_wait_sql, old_wait.old_wait,
                        old_wait.old_wait_time, old_wait.old_wait_mysql,
                        old_wait.new_wait_sql, old_wait.new_wait,
                        old_wait.new_wait_time, old_wait.new_wait_mysql,
                        testcase_new.id)
            db.session.add(wait)
            db.session.commit()
        return redirect(
            url_for('testcase_scene_blueprint.testcase_scene_testcase_list',
                    page=scene_page))
Beispiel #22
0
 def post(self):
     to_user_list = get_values('to_user_list')
     print('to_user_list:', to_user_list)
     to_user_list = to_user_list.split(',')
     all_is_email = True
     for email in to_user_list:
         if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email) is None:
             all_is_email = False
     if all_is_email:
         return jsonify(True)
     else:
         return jsonify(False)
Beispiel #23
0
 def get(self):
     user_id = session.get('user_id')
     new_sql_regist_variable = get_values('new_sql_regist_variable')
     if not new_sql_regist_variable:
         return jsonify(True)
     variable = Variables.query.filter(
         Variables.name == new_sql_regist_variable,
         Variables.user_id == user_id).count()
     if variable != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #24
0
 def post(self):
     username, password = get_values('username', 'password')
     users = User.query.filter(User.username == username).all()
     print(users)
     if len(users) > 0:
         user = users[0]
         if user.password == password:
             session['user_id'] = user.id
             session['request_{}'.format(user.id)] = ''
             print('login user_id', session.get('user_id'))
             return jsonify(msg='登录成功', data={'user_id': user.id})
         return jsonify(err='账号或密码错误')
     return jsonify(err='账号或密码错误')
Beispiel #25
0
 def post(self):
     name, mail_id, user_id = get_values('name', 'email_id', 'user_id')
     if mail_id:
         mail = Mail.query.filter(Mail.id != mail_id, Mail.name == name, Mail.user_id == user_id).count()
         if mail != 0:
             return jsonify(False)
         else:
             return jsonify(True)
     mail = Mail.query.filter(Mail.name == name, Mail.user_id == user_id).count()
     if mail != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #26
0
 def post(self):
     hope_result = get_values('hope_result')
     print('hope_result: ', hope_result)
     try:
         hope_results = hope_result.split(',')
         for hope_result in hope_results:
             com_method, _ = hope_result.split(':', 1)
             if com_method not in ["包含", "不包含", "等于", "不等于"]:
                 return jsonify(False)
         return jsonify(True)
     except Exception as e:
         print(e)
         return jsonify(False)
Beispiel #27
0
 def post(self):
     testcase_scene_id = get_values('id')
     testcase_scene = TestCaseScene.query.get(testcase_scene_id)
     testcases = testcase_scene.testcases
     testcase_results = []
     for testcase in testcases:
         testcase_result, regist_variable_value = post_testcase(
             testcase=testcase)
         testcase_results.extend(['【%s】' % testcase.name, testcase_result])
     testcase_results_html = '<br>'.join(testcase_results)
     print('TestCaseSceneRun: ',
           json.dumps({'testcase_results': testcase_results_html}))
     session['request_{}'.format(session['user_id'])] = ''
     return json.dumps(testcase_results_html)
Beispiel #28
0
 def post(self):
     name, mysql_id, user_id = get_values('name', 'mysql_id', 'user_id')
     print('mysql_id')
     if mysql_id:
         mysql = Mysql.query.filter(Mysql.id != mysql_id, Mysql.name == name, Mysql.user_id == user_id).count()
         if mysql != 0:
             return jsonify(False)
         else:
             return jsonify(True)
     mysql = Mysql.query.filter(Mysql.name == name, Mysql.user_id == user_id).count()
     if mysql != 0:
         return jsonify(False)
     else:
         return jsonify(True)
Beispiel #29
0
 def post(self):
     regular = get_values('regular')
     regular_list = regular.split(',')
     for _regular in regular_list:
         print('_regular:', _regular)
         if '$' in _regular:
             if _regular[1] != '.':
                 return jsonify(False)
             if len(_regular.split('.')) != len(set(_regular.split('.'))):
                 return jsonify(False)
             else:
                 for key in _regular.split('.'):
                     if ' ' in key:
                         return jsonify(False)
     return jsonify(True)
Beispiel #30
0
 def post(self):
     user_id, name, group_id = get_values('user_id', 'name', 'group_id')
     if group_id:
         case_group = CaseGroup.query.filter(
             CaseGroup.id != group_id, CaseGroup.name == name,
             CaseGroup.user_id == user_id).count()
         if case_group != 0:
             return jsonify(False)
         else:
             return jsonify(True)
     case_group = CaseGroup.query.filter(
         CaseGroup.name == name, CaseGroup.user_id == user_id).count()
     if case_group != 0:
         return jsonify(False)
     else:
         return jsonify(True)