python requests 上传多文件问题2022-08-29 15:17:10Prince0813 Prince0813订阅者关注私信270文章0粉丝 测试交流1 201字数 115阅读0分23秒阅读模式目前在对项目的导入接口(上传)进行测试,找了些资料看到很多都是单文件的例子或者文件都在同一个路径下,像我这种在不同路径下的文件,怎么写会更优雅一点呢?我这个写的过于生硬了,有没有更好的写法,请大佬们指点下。软件测试本文转自于TesterHome,如有侵权请联系(2523030730@qq.com)删除。相关阅读AI时代测试工程师的核心竞争力:从执行用例到可解释的质量判断从零搭建AI测试用例工作流:需求文档自动转思维导图AI+Skills如何让测试工程师效率提升10倍?三步实现智能生成测试用例宝塔面板的BUG新建网站时新建了文件再建文件夹时提示错误宝塔面板无法安装扩展的BUG解决方案PHP安装扩展下载链接错误测试反模式的思考 回复 1 Thirty-Thirty 9 2022-08-29 14:59:41 1F 回复 你这种写法没什么问题啊。 不同路径下文件上传,还可以写得更整齐 (无关优雅) 些。 files = { “field1”: (“file”, open(r”..Folder1file1.xlsx”, “rb”)), “field2”: (“file”, open(r”..Folder2file2.xlsx”, “rb”)), “field3”: (“file”, open(r”..Folder3file3.xlsx”, “rb”)), “field8”: (“file”, open(r”..Folder8file8.xlsx”, “rb”)) }注意:这里不要用循环语句。demo_path = “F:codepytest-auto-api…” uploadFiles = { “field1”:(“file”: ,open(r”{}file_name”.formart(demo_path),”rb”) } 代码确实不够简洁,假如文件很多,那么可读性会比较差。可以考虑下代码数据分离,用文本文件或者 yaml 文件把 path 单独存放,再写个 loader 读取到代码里面,代码就看着要 “优雅” 点。嗯嗯,是的嗯嗯,会封装的多谢,学习了import requestsdef build_upload_files(file_name_list): # 优化1: 将公共的文件夹路径抽离 root_folder_path = r’F:codepytest-auto-api2-masterrequests_demodemo’ temp_upload_files = dict() # 优化2: 将重复冗余的代码用循环生成字典对象 for index, file_name in enumerate(file_name_list, start=1): temp_upload_files.update({f’field{index}’: (‘file’, open(root_folder_path + ‘’ + file_name, ‘rb’))}) return temp_upload_filesif __name__ == ‘__main__’: # 优化3: 可以从配置文件中读取file_name_list file_names = [‘Project.xls’, ‘Projectstestdata.xls’] upload_files = build_upload_files(file_names) requests.post(url=’om’, files=upload_files)数据代码分离,再加上变量,再加上正则,再加上筛选,就很优雅啦 ,,水水水 回复问题 匿名网友 确定 昵称 邮箱 网址 Address 提交 取消 拖动滑块以完成验证 您可能喜欢 AI时代测试工程师的核心竞争力:从执行用例到可解释的质量判断 从零搭建AI测试用例工作流:需求文档自动转思维导图 AI+Skills如何让测试工程师效率提升10倍?三步实现智能生成测试用例 宝塔面板的BUG新建网站时新建了文件再建文件夹时提示错误 宝塔面板无法安装扩展的BUG解决方案PHP安装扩展下载链接错误 测试反模式的思考 使用 cookie 绕过验证码,换一个系统就无法通过验证 MeterSphere测试平台UI 自动化窗口切换方法 5000 块买的 python 自动化课程难道就这? 在 Linux 上搭建 Jenkins,自动构建接口测试
1F
你这种写法没什么问题啊。
不同路径下文件上传,还可以写得更整齐 (无关优雅) 些。
files = {
“field1”: (“file”, open(r”..Folder1file1.xlsx”, “rb”)),
“field2”: (“file”, open(r”..Folder2file2.xlsx”, “rb”)),
“field3”: (“file”, open(r”..Folder3file3.xlsx”, “rb”)),
“field8”: (“file”, open(r”..Folder8file8.xlsx”, “rb”))
}
注意:这里不要用循环语句。demo_path = “F:codepytest-auto-api…”
uploadFiles = {
“field1”:(“file”: ,open(r”{}file_name”.formart(demo_path),”rb”)
}
代码确实不够简洁,假如文件很多,那么可读性会比较差。可以考虑下代码数据分离,用文本文件或者 yaml 文件把 path 单独存放,再写个 loader 读取到代码里面,代码就看着要 “优雅” 点。嗯嗯,是的嗯嗯,会封装的多谢,学习了import requests
def build_upload_files(file_name_list):
# 优化1: 将公共的文件夹路径抽离
root_folder_path = r’F:codepytest-auto-api2-masterrequests_demodemo’
temp_upload_files = dict()
# 优化2: 将重复冗余的代码用循环生成字典对象
for index, file_name in enumerate(file_name_list, start=1):
temp_upload_files.update({f’field{index}’: (‘file’, open(root_folder_path + ‘’ + file_name, ‘rb’))})
return temp_upload_files
if __name__ == ‘__main__’:
# 优化3: 可以从配置文件中读取file_name_list
file_names = [‘Project.xls’, ‘Projectstestdata.xls’]
upload_files = build_upload_files(file_names)
requests.post(url=’om’, files=upload_files)
数据代码分离,再加上变量,再加上正则,再加上筛选,就很优雅啦
,,水水水