Example #1
0
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)
Example #2
0
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)
Example #3
0
 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)
Example #4
0
    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)
Example #5
0
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()