接口测试 python requests 上传多文件问题

迷龙 · 2022年07月08日 · 最后由 今晚打老虎 回复于 2022年07月11日 · 7511 次阅读

目前在对项目的导入接口(上传)进行测试,找了些资料看到很多都是单文件的例子或者文件都在同一个路径下,像我这种在不同路径下的文件,怎么写会更优雅一点呢?我这个写的过于生硬了,有没有更好的写法,请大佬们指点下。

共收到 8 条回复 时间 点赞

你这种写法没什么问题啊。
不同路径下文件上传,还可以写得更整齐 (无关优雅) 些。

files = {
    "field1": ("file", open(r"..\Folder1\file1.xlsx", "rb")),
    "field2": ("file", open(r"..\Folder2\file2.xlsx", "rb")),
    "field3": ("file", open(r"..\Folder3\file3.xlsx", "rb")),
    "field8": ("file", open(r"..\Folder8\file8.xlsx", "rb"))
}

注意:这里不要用循环语句。

demo_path = "F:\code\pytest-auto-api..."
uploadFiles = {
  "field1":("file": ,open(r"{}\file_name".formart(demo_path),"rb")
}

代码确实不够简洁,假如文件很多,那么可读性会比较差。可以考虑下代码数据分离,用文本文件或者 yaml 文件把 path 单独存放,再写个 loader 读取到代码里面,代码就看着要 “优雅” 点。

Thirty-Thirty 回复

嗯嗯,是的

嗯嗯,会封装的

多谢,学习了

import requests


def build_upload_files(file_name_list):
    # 优化1: 将公共的文件夹路径抽离
    root_folder_path = r'F:\code\pytest-auto-api2-master\requests_demo\demo'

    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', 'Projects\\testdata.xls']

    upload_files = build_upload_files(file_names)
    requests.post(url='https://www.xx.com', files=upload_files)

数据代码分离,再加上变量,再加上正则,再加上筛选,就很优雅啦
,,水水水

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册