Esempio n. 1
0
 def dispatch_request(self, id):
     if not session.get('username'):
         return redirect(url_for('login'))
     case = InterfaceTest.query.filter_by(id=id).first()
     me = Api(url=case.Interface_url,
              fangshi=case.Interface_meth,
              params=case.Interface_pase)
     result = me.testapi()
     retur_re = assert_in(case.Interface_assert, result)
     try:
         if retur_re == 'pass':
             flash(u'用例测试通过')
             return redirect(url_for('yongli'))
         flash(u'用例测试失败')
         return redirect(url_for('yongli'))
     except:
         flash(u'用例测试失败,请检查您的用例')
         return redirect(url_for('yongli'))
Esempio n. 2
0
 def dispatch_request(self):
     projec = (request.get_json())
     try:
         case_id = projec['caseid']
         url = projec['url']
         case = InterfaceTest.query.filter_by(id=int(case_id)).first()
         new_headers = case.Interface_headers
         if new_headers == 'None':
             ne = {'host': url}
         elif new_headers is None:
             ne = {'host': url}
         else:
             try:
                 ne = eval(new_headers)
                 ne['host'] = url
             except:
                 return jsonify({'code': 110, 'msg': '测试的请求头应该是字典格式的!'})
         me = Api(url=case.Interface_url,
                  fangshi=case.Interface_meth,
                  params=case.Interface_pase,
                  headers=ne)
         result = me.testapi()
         retur_re = assert_in(case.Interface_assert, result)
         try:
             if retur_re == 'pass':
                 case.Interface_is_tiaoshi = True
                 case.Interface_tiaoshi_shifou = False
                 if case.saveresult is True:
                     new_testre = TestcaseResult(case_id=case.id)
                     new_testre.result = str(result)
                     new_testre.testevir = (url)
                     db.session.add(new_testre)
                 db.session.commit()
                 return jsonify({'code': 200, 'msg': '测试用例调试通过!'})
             elif retur_re == 'fail':
                 case.Interface_is_tiaoshi = True
                 case.Interface_tiaoshi_shifou = True
                 if case.saveresult is True:
                     new_testre = TestcaseResult(case_id=case.id)
                     new_testre.result = str(result)
                     new_testre.testevir = (url)
                     db.session.add(new_testre)
Esempio n. 3
0
 def dispatch_request(self, id):
     next = request.headers.get('Referer')
     case = InterfaceTest.query.filter_by(id=id).first()
     me = Api(url=case.Interface_url,
              fangshi=case.Interface_meth,
              params=case.Interface_pase,
              headers=case.Interface_headers)
     result = me.testapi()
     retur_re = assert_in(case.Interface_assert, result)
     try:
         if retur_re == 'pass':
             case.Interface_is_tiaoshi = True
             case.Interface_tiaoshi_shifou = False
             if case.saveresult is True:
                 new_testre = TestcaseResult(case_id=case.id)
                 new_testre.result = str(result)
                 db.session.add(new_testre)
             db.session.commit()
             flash(u'用例测试通过')
             return redirect(next or url_for('home.yongli'))
Esempio n. 4
0
 def testapi(self):
     for case in range(len(self.url)):
         api = Api(url=self.url[case],
                   fangshi=self.meth[case],
                   params=self.parm[case])
         apijson = api.getJson()
         self.log_can.info_log(u'input:接口地址:%s,参数:%s,实际返回:%s,预期:%s' %
                               (self.url[case], self.parm[case], apijson,
                                self.assert_test[case]))
         come = assert_in(self.assert_test[case], apijson)
         if come == 'pass':
             self.result_pass += 1
             self.result_toal += 1
             self.bask_list.append(apijson)
             self.result_pf.append('pass')
         else:
             self.result_fail += 1
             self.result_toal += 1
             self.bask_list.append(apijson)
             self.result_pf.append('fail')
     return self.result_toal, self.result_pass, self.result_fail, self.result_pf, self.bask_list
Esempio n. 5
0
class MakeonecaseView(View):
    methods = ['GET', 'POST']

    @login_required
    def dispatch_request(self, id):
        case = InterfaceTest.query.filter_by(id=id).first()
        me = Api(url=case.Interface_url,
                 fangshi=case.Interface_meth,
                 params=case.Interface_pase,
                 headers=case.Interface_headers)
        result = me.testapi()
        retur_re = assert_in(case.Interface_assert, result)
        try:
            if retur_re == 'pass':
                flash(u'用例测试通过')
                return redirect(url_for('home.yongli'))
            flash(u'用例测试失败')
            return redirect(url_for('home.yongli'))
        except:
            flash(u'用例测试失败,请检查您的用例')
            return redirect(url_for('home.yongli'))
Esempio n. 6
0
     huoquyilai = testres.result
     canshu = case.getattr_p
     try:
         yilaidata = eval(huoquyilai)[canshu]
     except:
         case.Interface_is_tiaoshi = True
         case.Interface_tiaoshi_shifou = True
         db.session.commit()
         flash(u'测试用例获取依赖数据失败')
         return redirect(next or url_for('home.yongli'))
 try:
     pasrms = eval(case.Interface_pase)
     pasrms.update({canshu: yilaidata})
 except:
     return jsonify({'code': 152, 'msg': '测试参数应该是字典格式!'})
 me = Api(url=case.Interface_url,
          fangshi=case.Interface_meth,
          params=pasrms,
          headers=case.Interface_headers)
 result = me.testapi()
 retur_re = assert_in(case.Interface_assert, result)
 try:
     if retur_re == 'pass':
         case.Interface_is_tiaoshi = True
         case.Interface_tiaoshi_shifou = False
         if case.saveresult is True:
             new_testre = TestcaseResult(case_id=case.id)
             new_testre.result = str(result)
             db.session.add(new_testre)
         db.session.commit()
         flash(u'用例测试通过')
Esempio n. 7
0
 def testapi(self):
     for case in range(len(self.url)):
         self.log_can.info_log('%s:测试用例开始执行'%self.id[case])
         testcase=InterfaceTest.query.filter_by(id=self.id[case]).first()
         try:
             yuanlai = eval(self.parm[case])
         except Exception as e:
             self.log_can.error_log('用例:%s转化参数!原因:%s' % (self.id[case], e))
             self.result_toal += 1
             self.result_except += 1
             self.bask_list.append('转化参数,%s' % e)
             self.result_pf.append('Exception')
             continue
         mysql_result=[]
         if testcase.pid !="None":
             testret=TestcaseResult.query.filter_by(case_id=int(testcase.pid)).first()
             if testret:
                 data=testret.result
                 if data:
                     try:
                         huoqudata=eval(data)[testcase.getattr_p]
                         yuanlai.update({testcase.getattr_p: huoqudata})
                     except Exception as e:
                         self.log_can.error_log('用例:%s 提出依赖数据出错!原因:%s'%(self.id[case],e))
                         self.result_toal += 1
                         self.result_except += 1
                         self.bask_list.append('获取依赖的字段异常,%s'%e)
                         self.result_pf.append('Exception')
                 else:
                     self.log_can.info_log('用例:%s接口依赖结果没有保存!'%self.id[case] )
                     self.result_toal += 1
                     self.result_wei += 1
                     self.bask_list.append('依赖的测试结果没有保存')
                     self.result_pf.append(u'Exception')
             else:
                 self.log_can.info_log('用例:%s 依赖接口找不到!' % self.id[case])
                 self.result_toal += 1
                 self.result_wei += 1
                 self.bask_list.append('依赖的测试用例找不到')
                 self.result_pf.append(u'error')
         if self.is_database[case] is True:
             if self.urltest is None:
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append('None')
                 self.result_pf.append(u'测试环境不存在')
             if testcase.chaxunshujuku is None or testcase.databaseziduan is None:
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append('None')
                 self.result_pf.append(u'用例找不到查询数据库或者断言参数')
             if self.urltest.database is None :
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append('None')
                 self.result_pf.append(u'数据库没有配置!')
             if self.urltest.dbport is None or self.urltest.dbhost is None:
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append('检查数据库的地址和端口!')
                 self.result_pf.append(u'检查数据库的地址和端口!')
             if self.urltest.databaseuser is None or self.urltest.databasepassword is None:
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append('数据库登录账户没有找到')
                 self.result_pf.append(u'数据库登录账户没有找到')
             conncts=cursemsql(host=self.urltest.dbhost,port=self.urltest.dbport,user=self.urltest.databaseuser,password=self.urltest.databasepassword,database=self.urltest.database)
             if conncts['code']==0:
                 self.result_toal += 1
                 self.result_except += 1
                 self.bask_list.append('链接数据库异常')
                 self.result_pf.append('Exception')
             else:
                 result_myql=excemysql(conne=conncts['conne'],Sqlmy=self.data_mysql[case])
                 if result_myql['code']==0:
                     self.result_toal += 1
                     self.result_except += 1
                     self.bask_list.append(conncts['e'])
                     self.result_pf.append('Exception')
                 mysql_result=result_myql['result']
         try:
             api = Api(url=self.url[case], fangshi=self.meth[case], params=yuanlai,
                           headers=self.headers[case])
             apijson = api.getJson()
             if self.saveresult[case] is True:
                 new_case = TestcaseResult(result=str(apijson), case_id=testcase.id)
                 db.session.add(new_case)
                 try:
                     db.session.commit()
                 except Exception as e:
                     db.session.rollback()
                     self.log_can.info_log('用例:%s保存测试结果失败!原因:%s' % (self.id[case],e))
             self.log_can.info_log(u'测试的:接口地址:%s,请求头:%s,参数:%s,实际返回:%s,预期:%s' % (
             self.url[case], self.headers[case], self.parm[case], apijson, self.assert_test[case]))
             come = assert_in(self.assert_test[case], apijson)
             return_mysql = pare_result_mysql(mysqlresult=mysql_result, return_result=come,
                                              paseziduan=self.data_ziduan[case])
             if come == 'pass' and return_mysql['result']=='pass':
                 self.result_pass += 1
                 self.result_toal += 1
                 self.bask_list.append(apijson)
                 self.result_pf.append('pass')
             elif come == 'fail' or return_mysql['result']=='fail':
                 self.result_fail += 1
                 self.result_toal += 1
                 self.bask_list.append(apijson)
                 self.result_pf.append('fail')
             elif come == '预期不存在':
                 self.result_toal += 1
                 self.result_cashu += 1
                 self.bask_list.append(apijson)
                 self.result_pf.append(u'预期不存在')
             elif '异常' in come or return_mysql['code']== 1 :
                 self.result_toal += 1
                 self.result_except += 1
                 self.bask_list.append((apijson,return_mysql['result']))
                 self.result_pf.append('Exception')
             else:
                 self.result_toal += 1
                 self.result_wei += 1
                 self.bask_list.append(apijson)
                 self.result_pf.append(u'未知错误')
Esempio n. 8
0
    def testapi(self):
        for case in range(len(self.url)):
            testcase = InterfaceTest.query.filter_by(id=self.id[case]).first()
            if testcase.pid != "None":
                testret = TestcaseResult.query.filter_by(
                    case_id=int(testcase.pid)).first()
                if testret:
                    data = testret.result
                    if data:
                        try:
                            huoqudata = eval(data)[testcase.getattr_p]
                        except Exception as e:
                            self.result_toal += 1
                            self.result_except += 1
                            self.bask_list.append('获取依赖的字段异常,%s' % e)
                            self.result_pf.append('Exception')

                    else:
                        self.result_toal += 1
                        self.result_wei += 1
                        self.bask_list.append('依赖的测试结果没有保存')
                        self.result_pf.append(u'Exception')
                else:
                    self.result_toal += 1
                    self.result_wei += 1
                    self.bask_list.append('依赖的测试用例没有保存')
                    self.result_pf.append(u'Exception')
            else:
                try:
                    yuanlai = eval(self.parm[case])
                    yuanlai.update({testcase.getattr_p: huoqudata})
                    api = Api(url=self.url[case],
                              fangshi=self.meth[case],
                              params=self.parm[case],
                              headers=self.headers[case])
                    apijson = api.getJson()
                    if self.saveresult[case] is True:
                        new_case = TestcaseResult(result=str(apijson),
                                                  case_id=testcase.id)
                        db.session.add(new_case)
                        try:
                            db.session.commit()
                        except Exception as e:
                            db.session.rollback()
                    self.log_can.info_log(
                        u'测试的:接口地址:%s,请求头:%s,参数:%s,实际返回:%s,预期:%s' %
                        (self.url[case], self.headers[case], self.parm[case],
                         apijson, self.assert_test[case]))
                    come = assert_in(self.assert_test[case], apijson)
                    if come == 'pass':
                        self.result_pass += 1
                        self.result_toal += 1
                        self.bask_list.append(apijson)
                        self.result_pf.append('pass')
                    elif come == 'fail':
                        self.result_fail += 1
                        self.result_toal += 1
                        self.bask_list.append(apijson)
                        self.result_pf.append('fail')
                    elif come == '预期不存在':
                        self.result_toal += 1
                        self.result_cashu += 1
                        self.bask_list.append(apijson)
                        self.result_pf.append(u'预期不存在')
                    elif '异常' in come:
                        self.result_toal += 1
                        self.result_except += 1
                        self.bask_list.append(apijson)
                        self.result_pf.append('Exception')
                    else:
                        self.result_toal += 1
                        self.result_wei += 1
                        self.bask_list.append(apijson)
                        self.result_pf.append(u'未知错误')
                except:
                    self.result_toal += 1