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))
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 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)
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)
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)
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)
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()