예제 #1
0
def run_validata_test(testname, validatelist):
    '''
    测试用例的检查点执行
    '''
    if len(validatelist) != 0:
        for validatekey in validatelist:
            res = eval(validatekey)
            if res == True:
                Logger.info("测试用例[%s]检查点执行成功,检查点信息为 --> %s" % (testname, validatekey))
            else:
                Logger.war("测试用例[%s]检查点执行失败,检查点信息为 --> %s" % (testname, validatekey))
예제 #2
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)
예제 #3
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)
예제 #4
0
def runproduct():
    '''
    按产品执行所有用例
    {"idlist":"1,2"}
    '''
    dictdata = request.get_json()
    idlist = dictdata["idlist"]
    sql = "SELECT\
        t_testcass.id\
    FROM\
        t_product\
    LEFT JOIN t_project ON t_product.id = t_project.productid\
    LEFT JOIN t_modules ON t_project.id = t_modules.projectid\
    LEFT JOIN t_testcass ON t_modules.id = t_testcass.moduleid\
    WHERE t_product.id in (%s);" % idlist
    res = dbfucs.query(sql)
    jsoncasss = []
    for test in res:
        jsoncasss.append(test)
    # print(jsoncasss)
    for i in collect.collect_db_cass(jsoncasss):
        Logger.info("*" * 90)
    Logger.info("共计[%d]条测试用例执行完成!" % len(jsoncasss))
    Logger.info("*" * 90)
    response = {}
    response["code"] = 200
    response["msg"] = "成功!!!"
    return jsonify(response)
예제 #5
0
def runmodule():
    '''
    按模块执行所有用例
    {"idlist":"1,2"}
    '''
    dictdata = request.get_json()
    idlist = dictdata["idlist"]
    ids = ''
    for i in idlist:
        ids += str(i) + ","
    sql = "SELECT * FROM t_testcass WHERE moduleid in (%s)" % ids[:-1]
    res = dbfucs.query(sql)
    if len(res) == 0:
        response = {}
        response["code"] = 200
        response["msg"] = "没有可用用例执行"
        return jsonify(response)
    jsoncasss = []
    for test in res:
        jsoncasss.append(test)
    # print(jsoncasss)
    for i in collect.collect_db_cass(jsoncasss):
        Logger.info("*" * 90)
    Logger.info("共计[%d]条测试用例执行完成!" % len(jsoncasss))
    Logger.info("*" * 90)
    response = {}
    response["code"] = 200
    response["msg"] = "成功!!!"
    return jsonify(response)
예제 #6
0
def runproduct():
    '''
    按产品执行所有用例
    {"idlist":"1,2"}
    '''
    dictdata = request.get_json()
    idlist = dictdata["idlist"]
    ids = ''
    for i in idlist:
        ids += str(i) + ","
    sql = "SELECT\
        t_testcass.id\
    FROM\
        t_product\
    LEFT JOIN t_project ON t_product.id = t_project.productid\
    LEFT JOIN t_modules ON t_project.id = t_modules.projectid\
    LEFT JOIN t_testcass ON t_modules.id = t_testcass.moduleid\
    WHERE t_product.id in (%s);" % ids[:-1]
    # print(sql)
    res = dbfucs.query(sql)
    # print(res)
    if len(res) == 0:
        response = {}
        response["code"] = 200
        response["msg"] = "没有可用用例执行"
        return jsonify(response)
    idlist = []
    for i in res:
        idlist.append(i['id'])
    ids = ''
    for i in idlist:
        ids += str(i) + ","
    sql = "select id,testname,testtype,request,validate,extract from t_testcass where id in(%s);" % ids[:
                                                                                                        -1]
    res = dbfucs.query(sql)
    jsoncasss = []
    for test in res:
        jsoncasss.append(test)
    # print(jsoncasss)
    for i in collect.collect_db_cass(jsoncasss):
        Logger.info("*" * 90)
    Logger.info("共计[%d]条测试用例执行完成!" % len(jsoncasss))
    Logger.info("*" * 90)
    response = {}
    response["code"] = 200
    response["msg"] = "共计[%d]条测试用例执行完成!" % len(jsoncasss)
    return jsonify(response)
예제 #7
0
def runtests():
    '''{"idlist":"1,2"}'''
    dictdata = request.get_json()
    idlist = dictdata["idlist"]
    sql = "select id,testname,testtype,request,validate,extract from t_testcass where id in(%s);" % idlist
    res = dbfucs.query(sql)
    jsoncasss = []
    for test in res:
        jsoncasss.append(test)
    for i in collect.collect_db_cass(jsoncasss):
        Logger.info("*" * 90)
    Logger.info("共计[%d]条测试用例执行完成!" % len(jsoncasss))
    Logger.info("*" * 90)
    response = {}
    response["code"] = 200
    response["msg"] = "用例执行完成!"
    return jsonify(response)
예제 #8
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()