def insert_test_result(cassid,status,runtime="",result="",validate=""): ''' 将测试结果存入到数据库 ''' sql = "INSERT INTO `t_reports` (`cassid`, `status`, `runtime`, `result`, `validate`) VALUES ('%s', '%s', '%s', '%s', '%s')" % (cassid,status,runtime,result,validate) dbres = excute(sql) if dbres != True: Logger.error("保存测试结果到数据库出错,错误信息 --> %s" % dbres)
def insert_test_result(cassid, status="成功", runtime="", result="", validate="", version=-1): ''' 将测试结果存入到数据库 ''' from app.utils.common import get_current_time sql = "INSERT INTO `t_reports` " \ "(`cassid`, `status`, `runtime`, `result`, `validate`, `createtime`, `version`) " \ "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', %d)" % (cassid,status,runtime,result,validate, get_current_time(), version) dbres = excute(sql) if dbres != True: Logger.error("保存测试结果到数据库出错,错误信息 --> %s" % dbres)
def run_test(self): cassid = self.cassid testname = self.testname testtype = self.testtype request = eval(self.request) validates = eval(self.validates) extract = eval(self.extract) global extracts try: if testtype == "testsuite": execlist = get_global_values(request) if len(execlist) != 0: for execkey in execlist: # print("execkey:",execkey) exec(execkey) r = run_http_test(testname, request) execlist = extract_global_values(extract) if len(execlist) != 0: for execkey in execlist: # print("execkey:",execkey) exec(execkey) else: r = run_http_test(testname, request) runtime = r.elapsed.total_seconds() result = r.text print(result) validatelist = get_validata_test(validates) if len(validatelist) != 0: for validatekey in validatelist: res = eval(validatekey) if res == True: status = 0 Logger.info("测试用例[%s]检查点执行成功,检查点信息为 --> %s" % (testname, validatekey)) else: status = 1 Logger.war("测试用例[%s]检查点执行失败,检查点信息为 --> %s" % (testname, validatekey)) insert_test_result(cassid, status, runtime=runtime, result=result, validate=",".join(validatelist)) except Exception as e: status = 2 Logger.error("测试用例[%s]在执行过程中出现异常,错误信息为 --> %s" % (testname, e)) insert_test_result(cassid, status)
def run_test(self, version): # version是t_reports表中的version字段,表示当前测试用例的执行结果版本 # vesion越大,版本越靠前 cassid = self.cassid testname = self.testname testtype = self.testtype request = eval(self.request) validates = eval(self.validates) extract = eval(self.extract) global extracts try: if testtype == "testsuite": execlist = get_global_values(request) if len(execlist) != 0: for execkey in execlist: # print("execkey:",execkey) exec(execkey) r = run_http_test(testname, request) execlist = extract_global_values(extract) if len(execlist) != 0: for execkey in execlist: # print("execkey:",execkey) exec(execkey) else: r = run_http_test(testname, request) runtime = r.elapsed.total_seconds() result = r.text validatelist = get_validata_test(validates) # run_validata_test(testname, validatelist) if len(validatelist) != 0: for validatekey in validatelist: # assert eval(validatekey) ,"%s" % str(eval(validatekey)) # Logger.info("测试用例[%s]检查点执行成功,检查点信息为 --> %s" % (testname, validatekey)) res = eval(validatekey) if res == True: status = "成功" Logger.info("测试用例[%s]检查点执行成功,检查点信息为 --> %s" % (testname, validatekey)) else: status = "失败" Logger.war("测试用例[%s]检查点执行失败,检查点信息为 --> %s" % (testname, validatekey)) insert_test_result(cassid, status, runtime=runtime, result=result, validate=validatekey, version=version) except Exception as e: status = "报错" Logger.error("测试用例[%s]在执行过程中出现异常,错误信息为 --> %s" % (testname, e)) insert_test_result(cassid, status, version=version)
def run_http_test(testname, request): ''' 对HTTP接口发送请求 ''' Logger.info("开始执行测试用例[%s]" % testname) Logger.info("接口请求地址为 --> %s" % request["url"]) Logger.info("接口请求方法为 --> %s" % request["method"]) Logger.info("接口请求header --> %s" % request["headers"]) Logger.info("接口请求数据为 --> %s" % request["json"]) try: r = requests.request(**request) except (requests.exceptions.Timeout, requests.exceptions.ConnectionError) as timeout: Logger.error("测试用例[%s]在执行过程中出现异常,错误信息为 --> %s" % (testname, timeout)) Logger.info("接口响应时间为 --> %ss" % r.elapsed.total_seconds()) Logger.info("接口响应状态为 --> %s" % r.status_code) Logger.info("接口响应内容为 --> %s" % r.text) if r.status_code == 200: return r else: # Logger.error("测试用例[%s]在执行过程中出现异常,错误信息为 --> [code:%s],[error:%s]" % (testname, r.status_code, r.text)) raise Exception()