import requests import random import json import time import ipaddress # Report纯接口测试 反向用例方法,不验证数据统计准确性,单纯验证接口 # 生成随机ipv4或ipv6 MAX_IPV4 = ipaddress.IPv4Address._ALL_ONES # 2 ** 32 - 1 MAX_IPV6 = ipaddress.IPv6Address._ALL_ONES # 2 ** 128 - 1 def random_ipv4(): return ipaddress.IPv4Address._string_from_ip_int( random.randint(0, MAX_IPV4)) def random_ipv6(): return ipaddress.IPv6Address._string_from_ip_int( random.randint(0, MAX_IPV6)) # 随机生成邮箱地址 def RandomEmail(emailType=None, rang=None): __emailtype = ["@qq.com", "@163.com", "@126.com", "@189.com"] # 如果没有指定邮箱类型,默认在 __emailtype中随机一个 if emailType == None: __randomEmail = random.choice(__emailtype) else: __randomEmail = emailType # 如果没有指定邮箱长度,默认在4-10之间随机 if rang == None: __rang = random.randint(4, 10) else: __rang = int(rang) __Number = "0123456789qbcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPWRSTUVWXYZ" __randomNumber = "".join(random.choice(__Number) for i in range(__rang)) _email = __randomNumber + __randomEmail return _email # 获取Schema def schema(schemauerl, token, logtype): url = "http://192.168.44.72:8080/v1/log/schema?logType=" + logtype headers = {"Content-Type": "application/x-www-form-urlencoded", "Authorization": token} response = requests.get(url=url, headers=headers) return response.json() # 获取json串中groupColumnList的值 def groupby(schemajson, logtype, testpoint): dimensions = schemajson["data"]["doc"]["schema_query"]["dimensions"] dimensions.append("common_recv_time"); if logtype == "security_event_log" or logtype == "connection_record_log" or logtype == "voip_record_log": dimensions.remove("common_start_time") dimensions.remove("common_end_time") randomstr_1 = [] if testpoint == "GroupBy": randomstr_1.append("GroupBy_Negtive") else: randomstr_1 = random.sample(dimensions, 4) # 定义grp为返回值group的列表 grp = [] for i in randomstr_1: a = {"name": i} grp.append(a) re = [grp, randomstr_1] print("groupby", re) return re # 获取json串中queryColumnList的值 def DataBindings(schemajson, randomstr_1, testpoint, field): # 生成queryColumnList列表 print("field", field) metrics = schemajson["data"]["doc"]["schema_query"]["metrics"] metrics.append("common_log_id") # 在列表里随机元素 randomstr_2 = [] if testpoint == "DataBindings_Field" or testpoint == "DataBindings_Aggregate": randomstr_2.append(field) randomstr_3 = randomstr_2 else: randomstr_2 = random.sample(metrics, 6) # 在聚合列表中去掉groupby中的重复的元素 randomstr_3 = array_diff(randomstr_2, randomstr_1) # 将groupby中元素添加到串中 qul = [] for i in randomstr_1: a = {"name": i} qul.append(a) fields = schemajson["data"]["fields"] if testpoint == "DataBindings_Aggregate": list_1 = ["countdistinct"] list_2 = ["summ"] else: list_1 = ["sum", "min", "max", "avg", "count"] list_2 = ["count", "count_distinct"] if testpoint == "DataBindings_Field": Aggregate = "sum" randomstr_4 = {"name": randomstr_2[0], "expression": Aggregate} qul.append(randomstr_4) elif testpoint == "DataBindings_Aggregate": for i in randomstr_3: for j in fields: if i == j["name"]: jtype = j["type"] label = i sun = 1 if jtype == "int" or jtype == "long" or jtype == "float" or jtype == "double": for Aggregate in list_1: randomstr_4 = {"name": i, "expression": Aggregate, "label": label} qul.append(randomstr_4) label = label + str(sun) sun += 1 elif jtype == "randomstring" or jtype == "date" or jtype == "timestamp" or jtype == "string": for Aggregate in list_2: randomstr_4 = {"name": i, "expression": Aggregate, "label": label} qul.append(randomstr_4) label = label + str(sun) sun += 1 else: for i in randomstr_3: for j in fields: if i == j["name"]: jtype = j["type"] if jtype == "int" or jtype == "long" or jtype == "float" or jtype == "double": radomlist = random.sample(list_1, 1) randomstr_4 = {"name": i, "expression": radomlist[0]} qul.append(randomstr_4) elif jtype == "randomstring" or jtype == "date" or jtype == "timestamp" or jtype == "string": randomlist = random.sample(list_2, 1) randomstr_4 = {"name": i, "expression": randomlist[0]} qul.append(randomstr_4) print("DataBindings", qul) return qul # #去除a列表中存在的b的元素 def array_diff(a, b): # 定义空列表 c = [] # range(len(a))取的为列表a的索引,根据a的 for i in range(len(a)): # 取出索引对应的值 t = a[i] # 判断值是否存在在序列b中 if t not in b: # 如果序列不在b中,则写入序列c c.append(t) # 返回序列c,c就是列表a去除列表b之后的元素 return c def filterCondition(schemajson, testpoint, field): number = random.randint(0, 100000) randomstr = random.choice('abcdefghijklmnopqrstuvwxyz') schemafilters = schemajson["data"]["doc"]["schema_query"]["filters"] list1 = [] if testpoint == "Filter_Field" or testpoint == "Filter_Operator": list1.append(field) else: list1 = random.sample(schemafilters, 4) # 获取不同属性支持的部不同操作 fields = schemajson["data"]["fields"] operator = schemajson["data"]["doc"]["schema_query"]["references"]["operator"] andConditions = [] if testpoint == "Filter_Field": orConditions_list = [] Field = {"name": field, "expression": "!=", "value": [1], "type": "int"} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif testpoint == "Filter_Operator": for i in list1: # 遍历fields列表 for k in fields: # 当filters列表值等于fields的name时 if i == k["name"]: name = k["name"] type1 = k["type"] if type1 == "int" or type1 == "long": orConditions_list = [] Operator = ["=="] randomOperator = random.sample(Operator, 1) value = [str(number)] Field = {"name": name, "expression": randomOperator[0], "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif type1 == "string": orConditions_list = [] Operator = ["=="] randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] value = [] value.append(str(number)) Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) # # else: # if k["doc"]["constraints"] == None: # type1 = k["type"] # if type1 == "int" or type1 == "long": # orConditions_list = [] # Operator = ["=", "!=", ">", "<", ">=", "<="] # if testpoint == "Filter": # for op in Operator: # value = [str(number)] # Field = {"name": name, "expression": op, "value": value, "type": type1} # orConditions_list.append(Field) # else: # randomOperator = random.sample(Operator, 1) # value = [str(number)] # Field = {"name": name, "expression": randomOperator[0], "value": value, "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) # elif type1 == "string": # orConditions_list = [] # Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] # if testpoint == "Filter": # for op in Operator: # randomOperator = op # value = [] # if randomOperator == "=" or randomOperator == "!=": # value.append(str(number)) # elif randomOperator == "Like" or randomOperator == "Not Like": # value.append(randomstr) # elif randomOperator == "notEmpty": # value = [] # Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} # orConditions_list.append(Field) # else: # randomOperator_1 = random.sample(Operator, 1) # randomOperator = randomOperator_1[0] # value = [] # if randomOperator == "=" or randomOperator == "!=": # value.append(str(number)) # elif randomOperator == "Like" or randomOperator == "Not Like": # value.append(randomstr) # elif randomOperator == "notEmpty": # value = [] # Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) # # else: # if k["doc"]["constraints"]["operator_functions"] == None: # conrandomstraints = k["doc"]["constraints"] # type1 = k["type"] # if type1 == "int" or type1 == "long": # orConditions_list = [] # Operator = ["=", "!=", ">", "<", ">=", "<="] # if testpoint == "Filter": # for op in Operator: # randomOperator = op # if conrandomstraints["type"] == "timestamp": # # 获取当前时间戳 # t = int(time.time()) # value = [str(t)] # Field = {"name": name, "expression": randomOperator, "value": value, # "type": type1} # orConditions_list.append(Field) # else: # randomOperator_1 = random.sample(Operator, 1) # randomOperator = randomOperator_1[0] # if conrandomstraints["type"] == "timestamp": # # 获取当前时间戳 # t = int(time.time()) # value = [str(t)] # Field = {"name": name, "expression": randomOperator, "value": value, # "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) # elif type1 == "string": # orConditions_list = [] # Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] # if testpoint == "Filter": # if conrandomstraints["type"] == "ip": # for op in Operator: # # 获取ip # ip = random_ipv4() # value = [] # if op == "=" or op == "!=": # value.append(ip) # elif op == "Like" or op == "Not Like": # value.append(ip) # elif op == "notEmpty": # value = [] # Field = {"name": name, "expression": op, "value": value, "type": type1} # orConditions_list.append(Field) # elif conrandomstraints["type"] == "email": # for op in Operator: # randomOperator = op # Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] # randomOperator_1 = random.sample(Operator, 1) # randomOperator = randomOperator_1[0] # # 获取ip # emil = RandomEmail() # value = [] # if randomOperator == "=" or randomOperator == "!=": # value.append(emil) # elif randomOperator == "Like" or randomOperator == "Not Like": # value.append(emil) # elif randomOperator == "notEmpty": # value = [] # Field = {"name": name, "expression": randomOperator, "value": value, # "type": type1} # orConditions_list.append(Field) # else: # randomOperator_1 = random.sample(Operator, 1) # randomOperator = randomOperator_1[0] # if conrandomstraints["type"] == "ip": # # 获取ip # ip = random_ipv4() # value = [] # if randomOperator == "=" or randomOperator == "!=": # value.append(ip) # elif randomOperator == "Like" or randomOperator == "Not Like": # value.append(ip) # elif randomOperator == "notEmpty": # value = [] # Field = {"name": name, "expression": randomOperator, "value": value, # "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) # elif conrandomstraints["type"] == "email": # Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] # randomOperator_1 = random.sample(Operator, 1) # randomOperator = randomOperator_1[0] # # 获取ip # emil = RandomEmail() # value = [] # if randomOperator == "=" or randomOperator == "!=": # value.append(emil) # elif randomOperator == "Like" or randomOperator == "Not Like": # value.append(emil) # elif randomOperator == "notEmpty": # value = [] # Field = {"name": name, "expression": randomOperator, "value": value, # "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) # else: # type1 = k["type"] # orConditions_list = [] # operator1 = k["doc"]["constraints"]["operator_functions"] # operator2 = operator1.split(",") # if testpoint == "Filter": # for op in operator2: # operatordata = k["doc"]["data"] # code = [] # for i in operatordata: # code_1 = i["code"] # code.append(code_1) # for co in code: # Field = {"name": name, "expression": op, "value": co, "type": type1} # orConditions_list.append(Field) # else: # operator3 = random.sample(operator2, 1) # operatordata = k["doc"]["data"] # code = [] # for i in operatordata: # code_1 = i["code"] # code.append(code_1) # code2 = random.sample(code, 1) # Field = {"name": name, "expression": operator3[0], "value": code2, "type": type1} # orConditions_list.append(Field) # orConditions = {"orConditions": orConditions_list} # andConditions.append(orConditions) else: for i in list1: # 遍历fields列表 for k in fields: # 当filters列表值等于fields的name时 if i == k["name"]: name = k["name"] doc = k["doc"] # 获取无任何特殊说明列: if doc == None: type1 = k["type"] if type1 == "int" or type1 == "long": orConditions_list = [] Operator = ["=", "!=", ">", "<", ">=", "<="] if testpoint == "Filter": for op in Operator: value = [str(number)] Field = {"name": name, "expression": op, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator = random.sample(Operator, 1) value = [str(number)] Field = {"name": name, "expression": randomOperator[0], "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif type1 == "string": orConditions_list = [] Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] if testpoint == "Filter": for op in Operator: value = [] if op == "=" or op == "!=": value.append(str(number)) elif op == "Like" or op == "Not Like": value.append(randomstr) elif op == "notEmpty" or op == "empty": value = [] Field = {"name": name, "expression": op, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] value = [] if randomOperator == "=" or randomOperator == "!=": value.append(str(number)) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(randomstr) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) else: if k["doc"]["constraints"] == None: type1 = k["type"] if type1 == "int" or type1 == "long": orConditions_list = [] Operator = ["=", "!=", ">", "<", ">=", "<="] if testpoint == "Filter": for op in Operator: value = [str(number)] Field = {"name": name, "expression": op, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator = random.sample(Operator, 1) value = [str(number)] Field = {"name": name, "expression": randomOperator[0], "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif type1 == "string": orConditions_list = [] Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] if testpoint == "Filter": for op in Operator: randomOperator = op value = [] if randomOperator == "=" or randomOperator == "!=": value.append(str(number)) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(randomstr) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] value = [] if randomOperator == "=" or randomOperator == "!=": value.append(str(number)) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(randomstr) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) else: if k["doc"]["constraints"]["operator_functions"] == None: conrandomstraints = k["doc"]["constraints"] type1 = k["type"] if type1 == "int" or type1 == "long": orConditions_list = [] Operator = ["=", "!=", ">", "<", ">=", "<="] if testpoint == "Filter": for op in Operator: randomOperator = op if conrandomstraints["type"] == "timestamp": # 获取当前时间戳 t = int(time.time()) value = [str(t)] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] if conrandomstraints["type"] == "timestamp": # 获取当前时间戳 t = int(time.time()) value = [str(t)] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif type1 == "string": orConditions_list = [] Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] if testpoint == "Filter": if conrandomstraints["type"] == "ip": for op in Operator: # 获取ip ip = random_ipv4() value = [] if op == "=" or op == "!=": value.append(ip) elif op == "Like" or op == "Not Like": value.append(ip) elif op == "notEmpty": value = [] Field = {"name": name, "expression": op, "value": value, "type": type1} orConditions_list.append(Field) elif conrandomstraints["type"] == "email": for op in Operator: randomOperator = op Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] # 获取ip emil = RandomEmail() value = [] if randomOperator == "=" or randomOperator == "!=": value.append(emil) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(emil) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) else: randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] if conrandomstraints["type"] == "ip": # 获取ip ip = random_ipv4() value = [] if randomOperator == "=" or randomOperator == "!=": value.append(ip) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(ip) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) elif conrandomstraints["type"] == "email": Operator = ["=", "!=", "Like", "Not Like", "notEmpty", "empty"] randomOperator_1 = random.sample(Operator, 1) randomOperator = randomOperator_1[0] # 获取ip emil = RandomEmail() value = [] if randomOperator == "=" or randomOperator == "!=": value.append(emil) elif randomOperator == "Like" or randomOperator == "Not Like": value.append(emil) elif randomOperator == "notEmpty": value = [] Field = {"name": name, "expression": randomOperator, "value": value, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) else: type1 = k["type"] orConditions_list = [] operator1 = k["doc"]["constraints"]["operator_functions"] operator2 = operator1.split(",") if testpoint == "Filter": for op in operator2: operatordata = k["doc"]["data"] code = [] for i in operatordata: code_1 = i["code"] code.append(code_1) for co in code: Field = {"name": name, "expression": op, "value": co, "type": type1} orConditions_list.append(Field) else: operator3 = random.sample(operator2, 1) operatordata = k["doc"]["data"] code = [] for i in operatordata: code_1 = i["code"] code.append(code_1) code2 = random.sample(code, 1) Field = {"name": name, "expression": operator3[0], "value": code2, "type": type1} orConditions_list.append(Field) orConditions = {"orConditions": orConditions_list} andConditions.append(orConditions) filterCondition = {"andConditions": andConditions} print("filterCondition", filterCondition) return filterCondition # 获取having条件的串 def havingjson(schemajson, testpoint, field): number = random.randint(0, 100000) schemametrics = schemajson["data"]["doc"]["schema_query"]["metrics"] aggregation = schemajson["data"]["doc"]["schema_query"]["references"]["aggregation"] schemametrics.append("common_log_id") metricslist = [] if testpoint == "Having_Field" or testpoint == "Having_Aggregate" or testpoint == "Having_Operator": metricslist.append(field) else: metricslist = random.sample(schemametrics, 4) fields = schemajson["data"]["fields"] if testpoint == "Having_Aggregate": Aggregate = ["COUNTT"] else: Aggregate = ["COUNT", "AVG", "SUM", "MAX", "MIN"] if testpoint == "Having_Operator": operator = ["=="] else: operator = ["=", "!=", ">", "<", ">=", "<="] andConditions_list = [] # 遍历的到的having条件列表 if testpoint == "Having_Field": orConditions_list=[] havingdict = {"name": field, "function": "count","expression": "=", "value": 11} orConditions_list.append(havingdict) orConditions = {"orConditions": orConditions_list} andConditions_list.append(orConditions) elif testpoint == "Having_Aggregate": for j in fields: if field == j["name"]: name = j["name"] type1 = j["type"] for v in aggregation: if type1 == v["type"]: orConditions_list = [] if v["type"] != "string": functionslist = Aggregate else: functionslist = ["COUNTT"] if field == "common_log_id": functionslist = ["COUNTT"] functions_1 = random.sample(functionslist, 1) operator_1 = random.sample(operator, 1) havingdict = {"name": name, "function": str.lower(functions_1[0]), "expression": operator_1[0], "value": str(number)} orConditions_list.append(havingdict) orConditions = {"orConditions": orConditions_list} andConditions_list.append(orConditions) elif testpoint == "Having_Operator": for j in fields: if field == j["name"]: name = j["name"] type1 = j["type"] for v in aggregation: if type1 == v["type"]: orConditions_list = [] if v["type"] != "string": functionslist = Aggregate else: functionsstr = v["functions"] functionslist = functionsstr.split(",") if field == "common_log_id": functionslist = ["COUNT"] functions_1 = random.sample(functionslist, 1) if functions_1 == "COUNT_DISTINCT" and type1 != "string": functions_1 = random.sample(functionslist, 1) operator_1 = random.sample(operator, 1) havingdict = {"name": name, "function": str.lower(functions_1[0]), "expression": operator_1[0], "value": str(number)} orConditions_list.append(havingdict) orConditions = {"orConditions": orConditions_list} andConditions_list.append(orConditions) else: for i in metricslist: for j in fields: if i == j["name"]: name = j["name"] type1 = j["type"] for v in aggregation: if type1 == v["type"]: orConditions_list = [] if v["type"] != "string": functionslist = Aggregate else: functionsstr = v["functions"] functionslist = functionsstr.split(",") if field == "common_log_id": functionslist = ["COUNT"] if testpoint == "Having": for functions_1 in functionslist: for operator_1 in operator: havingdict = {"name": name, "function": str.lower(functions_1), "expression": operator_1, "value": str(number)} orConditions_list.append(havingdict) orConditions = {"orConditions": orConditions_list} andConditions_list.append(orConditions) else: functions_1 = random.sample(functionslist, 1) if functions_1 == "COUNT_DISTINCT" and type1 != "string": functions_1 = random.sample(functionslist, 1) operator_1 = random.sample(operator, 1) havingdict = {"name": name, "function": str.lower(functions_1[0]), "expression": operator_1[0], "value": str(number)} orConditions_list.append(havingdict) orConditions = {"orConditions": orConditions_list} andConditions_list.append(orConditions) havingCondition = {"andConditions": andConditions_list} print("having", havingCondition) return havingCondition # 拼接字符串 def datasetjson(schemauerl, token, testname, logtype, testpoint, field): schema_new = schema(schemauerl, token, logtype) group_re = groupby(schema_new, logtype, testpoint) groupColumnList = group_re[0] group_randomstr = group_re[1] queryColumnList = DataBindings(schema_new, group_randomstr, testpoint, field) filterCondition_1 = filterCondition(schema_new, testpoint, field) havingjson_1 = havingjson(schema_new, testpoint, field) if testpoint == "LogType": logtype = field datasetdict = { "list": { "name": testname, "logType": logtype, "groupColumnList": groupColumnList, "queryColumnList": queryColumnList, "filterCondition": filterCondition_1, "havingCondition": havingjson_1 } } print(datasetdict) print("datasetjson", json.dumps(datasetdict)) return json.dumps(datasetdict) def ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, datasetgeturl, chargeturl, testname, logtype, testpoint, field=None): headers = {"Content-Type": "application/json", "Authorization": token} # dataset生成json串并发送请求 _datasetjson = datasetjson(schemaurl, token, testname, logtype, testpoint, field) response1 = requests.post(url=dataseturl, data=_datasetjson, headers=headers) print("返回数据1", response1) code = response1.json()["code"] print("datasetcode:", code) if testpoint == "LogType": assert code == 40040002 elif testpoint == "GroupBy": assert code == 40040008 elif testpoint == "DataBindings_Field": assert code == 40040004 elif testpoint == "DataBindings_Aggregate": assert code == 40040006 elif testpoint == "Filter_Field": assert code == 40040007 elif testpoint == "Filter_Operator": assert code == 40040010 elif testpoint == "Having_Field": assert code == 40040074 elif testpoint == "Having_Aggregate": assert code == 40040072 elif testpoint == "Having_Operator": assert code == 40040073 def ReportPositiveTest_Negtive(host, port, token, dataseturl, charurl, repporturl, logtypelist): testpoint=["LogType","GroupBy","DataBindings_Field","DataBindings_Aggregate","Filter_Field","Filter_Operator","Having_Field","Having_Aggregate","Having_Operator"] for logtype in logtypelist: schemaurl = "http://" + host + ":" + port + "/v1/log/schema?logType=" + logtype schema_new = schema(schemaurl, token, logtype) metrics = schema_new["data"]["doc"]["schema_query"]["metrics"] schemafilters = schema_new["data"]["doc"]["schema_query"]["filters"] metrics.append("common_log_id") for j in testpoint: print(j) if j == "LogType": testname = "Report" + logtype + j dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" filter = "Negtive_log" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "GroupBy": testname = "Report" + logtype + j dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" filter = "GroupByNegtive" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "DataBindings_Field": testname = "Report" + logtype + j dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" filter = "DataBindingsFieldNegtive" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "DataBindings_Aggregate": for filter in metrics: testname = "Report" + logtype + j + filter dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "Filter_Field": testname = "Report" + logtype + j dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" filter = "FilterFieldNegtive" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "Filter_Operator": for filter in schemafilters: testname = "Report" + logtype + j + filter dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "Having_Field": testname = "Report" + logtype + j dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" filter="HavingFieldNegtive" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "Having_Aggregate": for filter in metrics: testname = "Report" + logtype + j + filter dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter) if j == "Having_Operator": for filter in metrics: testname = "Report" + logtype + j + filter dataset_geturl = dataseturl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&logType=&opStartTime=&opEndTime=&opUser=" char_geturl = charurl + "?pageSize=20&pageNo=1&id=&name=" + testname + "&opUser=" ReportInterfaceTest(schemaurl, token, dataseturl, charurl, repporturl, dataset_geturl, char_geturl, testname, logtype, j, filter)