在接口自动化中,当请求参数和响应参数的格式都是 xml 格式时,需要对参数进行处理,将 json 格式的请求参数转换为 xml 格式,将 xml 的响应参数转换为 json 格式。
安装支持 xml 和 json 相互转换的第三方库:[xmltodict]
pip install xmltodict
# 接收一个json文件路径参数
def json_to_xml(json_path):
try:
with open(json_path,'rb') as file_object:
json_str = file_object.read()
convertXml = ''
jsDict = json.loads(json_str)
#如果xml标签中间的数值存在特定的标记,需要在转换前拼接
for key,value in jsDict.items():
jsDict[key] = "[["+value+"]]"
convertXml = xmltodict.unparse(jsDict,pretty=True,encoding='utf-8')
return convertXml
except FileNotFoundError:
print("File Not Found")
def xml_to_json(xml_path):
try:
xml_file = open(xml_path,'rb')
xml_str = xml_file.read()
converteJson = xmltodict.parse(xml_str,encoding='utf-8')
jsonStr = json.dumps(converteJson,indent=4)
return jsonStr
except FileNotFoundError:
print("File Not Found")
def handle_json(self,json_dict):
for key,value in json_dict.items():
if not isinstance(json_dict[key],dict):
json_dict[key] = "<![CDATA[" + str(value) + "]]>"
else:
handle_json(json_dict[key])
return json_dict