正常的接口自动化基本都是json的格式,对于文件上传是一种特殊的格式是表单格式针对这种表单格式在接口自动化中怎么处理,主要通过工作中使用的一个实际的例子进行分享
举例:web上需要导入一个文件实现相关的功能,主要通过两个接口,第一个接口就是将文件进行上传或者上传到指定地点的token,第二个借口主要是将这个文件上传到指定的网址
接口1:入参-出参
接口2:入参-出参
import json
import jsonpath
import requests
url1 = 'https://apigw-sit.ypshengxian.com/request' # 接口调用的服务器的地址
url2 = 'https://sit-api-ypsx-resource.ypsx-internal.com/resource/upload' # 将文件上传到终端的地址
filename = '库存导入模块.xlsx' # 文件的地址
filepath='E:/testproject/库存导入模版.xlsx'
# 请求头的地址
headers1 = {
'app-id': 'yptb',
'app-version': '1.0',
'app-platform': 'wxApp',
'Content-Type': 'text/plain'
}
data1 = {"api": "ylp.md.resource.service.getUploadToken", "version": "1.0", "token": "5dabc95eac7e4520ba96bbe481f785a0",
"nonce": "145a156d-d72b-11bc-bcbe-6f684dd2dca2", "login": "13270719291", "params": {"fileName": filename}}
#将data数据转换成json格式
data2=json.dumps(data1)
# 接口1获取上传的token
res = requests.request(method='POST',url=url1, data=data2,headers=headers1).json()
idtoken=jsonpath.jsonpath(res,'$..params')[0]
print(idtoken)
idtoken1=json.loads(idtoken)['token']
print(idtoken1)
#接口2将文件上传到指定位置
files={
"file": ("库存导入模版.xlsx", open(filepath, "rb"), "application/json") #因为上传的文件是二进制所以要将文件以二进制的方式进行打开
}
data2={
"token": idtoken1
}
response = requests.request(method='POST',url=url2, files=files, data=data2).json()
print(response)