• requests上传文件,又要上传data的处理


    前话

    最近在自己学着弄接口自动化框架,因为要封装一个发送请求的父类,其中有考虑到上传文件,以及同时上传文件,和传递其他字段数据,遇到点小问题 这里解决下。

    实例的接口数据

    参考文档
    来自fastapi官方文档上传文件实例:https://fastapi.tiangolo.com/zh/tutorial/request-files/
    https://www.cnblogs.com/sanduzxcvbnm/p/12781125.html

    #!/usr/bin/env/python3
    # -*- coding:utf-8 -*-
    """
    @project: Api
    @author: zy7y
    @file: fapi.py
    @ide: PyCharm
    @time: 2020/8/1
    """
    
    from fastapi import FastAPI, File, UploadFile, Form
    
    app = FastAPI()
    
    
    @app.post("/uploadfile/")
    async def create_upload_file(file_excel: UploadFile = File(...), username: str = Form(...)):
        # 读取文件
        contents = await file_excel.read()
        # 保存本地
        with open(file_excel.filename, "wb") as f:
            f.write(contents)
        return {'msg': '操作成功', "filename": file_excel.filename, 'username': username}
    
    
    if __name__ == '__main__':
        import uvicorn
        uvicorn.run('fapi:app', reload=True)
    

    运行这个文件:可以通过http://127.0.0.1:8000/docs查看接口文档

    Snipaste_2020-08-01_18-59-29.png

    • 请求路径:/uploadfile/
    • 请求方法:post
    • 请求参数
    参数名 参数说明 备注
    file_excel 文件二进制对象 不能为空
    username 用户名 不能为空
    • 响应参数
    参数名 参数说明 备注
    msg 操作结果
    filename 文件名称
    username 用户名
    • 响应数据
    {
      "msg": "操作成功",
      "filename": "Python自动化开发实战.pdf",
      "username": "柒意"
    }
    

    使用Request请求该接口

    #!/usr/bin/env/python3
    # -*- coding:utf-8 -*-
    """
    @project: apiAutoTest
    @author: zy7y
    @file: request_demo.py
    @ide: PyCharm
    @time: 2020/8/1
    """
    
    import requests
    
    # 上传文件接口
    url = 'http://127.0.0.1:8000/uploadfile/'
    # 上传非文件的参数数据
    data = {
        "username": "柒意",
    }
    # 上传文件类型的参数数据, 下面的 'file_excel' 是上面接口中对应的请求参数里的文件对象中的参数名,
    file = {'file_excel': open('../data/case_data.xlsx', 'rb')}
    
    res = requests.post(url, data, files=file)
    print(res.json())
    

    结果:

    /Users/zy7y/PycharmProjects/apiAutoTest/venv/bin/python /Users/zy7y/PycharmProjects/apiAutoTest/tools/demo.py
    {'msg': '操作成功', 'filename': 'case_data.xlsx', 'username': '柒意'}
    
    Process finished with exit code 0
    
    

    ⚠️注意:file_excel是接口请求参数中,接受文件对象的参数名

    作者:zy7y
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    python装饰器的wraps作用
    lambda函数和map函数
    python直接赋值、切片、浅拷贝和深拷贝
    ubuntu shell脚本出错 dash
    关于方法论和相关书籍
    如何安全的大数据量表在线进行DML操作
    mysql group by 查询非聚集列
    MongoTemplate进行增删改查
    Mockito 的用法
    一个人开始优秀的3种迹象
  • 原文地址:https://www.cnblogs.com/zy7y/p/13416074.html
Copyright © 2020-2023  润新知