import json import os, logging # from common.connectDB import SqL from jsonpath_rw import jsonpath, parse log = logging.getLogger('log') # 初始化log # sql = SqL() # windows sql_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + '\\data' + '\\data.json' # params json file res_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + '\\data' + '\\res.json' # headers json file rely_on_path = os.path.abspath( os.path.dirname(os.path.dirname(__file__))) + '\\data' + '\\rely_on.json' # 临时文件,存接口返回的参数 # linux # json_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + '/data' + '/data.json' def get_json(path, field=''): """获取json文件中的值,data.json和res.json可共用""" with open(path, 'r', encoding='utf-8') as f: json_data = json.load(f) if field: data = json_data.get(field) return data else: return json_data def analysis_json(res, filed): """解析请求返回的json数据,返回依赖的字段和值组成的字典""" if isinstance(res, dict): if filed: jsonpath_expr = parse(filed) male = jsonpath_expr.find(res) value_list = [match.value for match in male] for value in value_list: data_dict = {filed: value} return data_dict else: log.error('{}传入字段异常!'.format(analysis_json.__name__)) else: log.error('{} 参数不是字典类型'.format(analysis_json.__name__)) def write_body(res, field): """请求返回值写入data.json中,在body参数中使用。data.json中要提前写入需要的字段,然后用从返回值中提取的结果替换""" if isinstance(res, dict): if field: with open(sql_path, 'r', encoding='utf-8') as f: json_data = json.load(f) for key in json_data: if isinstance(json_data[key], dict): for k in json_data[key]: if k == field: json_data[key][field] = res[field] with open(sql_path, 'w', encoding='utf-8') as fp: fp.write(str(json_data).replace("'", '"')) log.info('请求返回值写入json成功!field ==> {}'.format(field)) else: log.error('{}传入字段异常!'.format(analysis_json.__name__)) else: log.error('{} 参数不是字典类型'.format(write_body.__name__)) def write_data(res, json_path): """把处理后的参数写入json文件""" if isinstance(res, dict): with open(json_path, 'w', encoding='utf-8') as f: json.dump(res, f, indent=4) log.info('Interface Params Total:{} ,write to json file successfully!\n'.format(len(res))) else: log.info('{} Params is not dict.\n'.format(write_data.__name__)) if __name__ == '__main__': # body = get_json(json_path, 'registered_member') # print(body) # for k, v in body.items(): # print(k,v) # data = {'uid': 99, 'ukey': 'bef0246cb2059d90c5e4af8accdf4429'} # write_headers(data) data = get_json(res_path) print(data)