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'))
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)
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'))
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
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'))
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'用例测试通过')
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'未知错误')
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