最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python接口自動化之文件上傳/下載接口詳解

 更新時間:2022年04月05日 08:16:35   作者:IT小學(xué)生蔡坨  
在接口測試中,經(jīng)常會涉及到文件上傳以及下載,下面這篇文章主要給大家介紹了關(guān)于Python接口自動化之文件上傳/下載接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

〇、前言

文件上傳/下載接口與普通接口類似,但是有細(xì)微的區(qū)別。

如果需要發(fā)送文件到服務(wù)器,例如:上傳文檔、圖片、視頻等,就需要發(fā)送二進(jìn)制數(shù)據(jù),上傳文件一般使用的都是 Content-Type: multipart/form-data 數(shù)據(jù)類型,可以發(fā)送文件,也可以發(fā)送相關(guān)的消息體數(shù)據(jù)。

反之,文件下載就是將二進(jìn)制格式的響應(yīng)內(nèi)容存儲到本地,并根據(jù)需要下載的文件的格式來寫文件名,例如:F:/合同文件.pdf。

一、文件上傳接口

1. 接口文檔

Request URL: /createbyfile

Request Method: POST

Content-Type: multipart/form-data

名稱類型是否必須描述
fileFile文檔文件
titleString文檔名稱
fileTypeString文件類型:doc, docx, txt, pdf, png, gif, jpg, jpeg, tiff, html, rtf, xls, txt

2. 代碼實現(xiàn)

(1)實現(xiàn)步驟:

構(gòu)造文件數(shù)據(jù),通過open函數(shù)以二進(jìn)制方式打開文件

文件上傳接口參數(shù)與普通post請求一樣,需要寫成Key和Value模式,Key為參數(shù)名稱file(也是組件的name屬性),Value為一個元組(與普通接口不同的地方)

"file": (
    "", # 元組第一個值為文件名稱,沒有則取None
    open(r"F:\pdf_file.pdf", "rb"), # 若第一個值非None,則取文件open打開的二進(jìn)制流,否則直接寫文件路徑,如"F:\pdf_file.pdf"
    "pdf" # 文件類型
)
"file": (
    None,
    "F:\pdf_file.pdf"
)

構(gòu)造其他數(shù)據(jù)

{
    "title": "接口發(fā)起的文檔",
    "fileType": "pdf"
}

發(fā)送請求,將文件數(shù)據(jù)以 files 參數(shù)傳入,其他消息體數(shù)據(jù)通過 data 、json 、 headers 、 cookies 等傳入

req = {
            "url": "127.0.0.1/v2/document/createbyfile",
            "method": "POST",
            "headers": {},
            "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},
            "data": {
                "title": "接口發(fā)起的文檔",
                "fileType": "pdf"
            }
        }

(2)完整代碼

base_api.py

import requests
class BaseApi:
? ? @staticmethod
? ? def requests_http(req):
? ? ? ? # ** 解包
? ? ? ? result = requests.request(**req)
? ? ? ? return result

api/createbyfile.py

# -*- coding:utf-8 -*-
# 作者:IT小學(xué)生蔡坨坨
# 時間:2022/3/12 21:04
# 功能:根據(jù)文件類型創(chuàng)建合同文檔
from base_api import BaseApi
class Createbyfile:
? ? def createbyfile(self):
? ? ? ? req = {
? ? ? ? ? ? "url": "127.0.0.1/createbyfile",
? ? ? ? ? ? "method": "POST",
? ? ? ? ? ? "headers": {},
? ? ? ? ? ? "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},
? ? ? ? ? ? "data": {
? ? ? ? ? ? ? ? "title": "接口發(fā)起的文檔",
? ? ? ? ? ? ? ? "fileType": "pdf"
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? res = BaseApi().requests_http(req)
? ? ? ? assert res.status_code == 200
? ? ? ? res_json = res.json()
? ? ? ? return res_json["result"]["documentId"]
if __name__ == '__main__':
? ? Createbyfile().createbyfile()

二、文件下載接口

1. 接口文檔

Request URL:/download

Request Method:GET

名稱類型是否必須描述
contractIdLongIDID
downloadItemsString[]下載可選項,NORMAL(正文),ATTACHMENT(附件)
needCompressForOneFileBoolean是,默認(rèn)單文件也壓縮當(dāng)下載的文件僅一份時,是否壓縮

2. 代碼實現(xiàn)

# -*- coding:utf-8 -*-
# 作者:IT小學(xué)生蔡坨坨
# 時間:2022/4/5 2:56
# 功能:下載合同
from base_api import BaseApi
class Download:
? ? def download(self):
? ? ? ? req = {
? ? ? ? ? ? "url": "127.0.0.1/download",
? ? ? ? ? ? "method": "GET",
? ? ? ? ? ? "headers": {},
? ? ? ? ? ? "params": {
? ? ? ? ? ? ? ? "contractId": 2947403075747869536,
? ? ? ? ? ? ? ? "downloadItems": ["NORMAL"],
? ? ? ? ? ? ? ? "needCompressForOneFile": False
? ? ? ? ? ? },
? ? ? ? }
? ? ? ? res = BaseApi().requests_http(req).content # 注意“.content"獲取返回內(nèi)容
? ? ? ? # with open("F:/response.zip", "wb") as f:
? ? ? ? with open("F:/response.pdf", "wb") as f:
? ? ? ? ? ? f.write(res)
? ? ? ? return res
if __name__ == '__main__':
? ? Download().download()

總結(jié)

到此這篇關(guān)于Python接口自動化之文件上傳/下載接口的文章就介紹到這了,更多相關(guān)Python文件上傳/下載接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python編寫Windows Service服務(wù)程序

    Python編寫Windows Service服務(wù)程序

    這篇文章主要為大家詳細(xì)介紹了Python編寫Windows Service服務(wù)程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python中請不要再用re.compile了

    Python中請不要再用re.compile了

    這篇文章主要給大家介紹了關(guān)于Python中為何不要再用re.compile的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python利用前序和中序遍歷結(jié)果重建二叉樹的方法

    Python利用前序和中序遍歷結(jié)果重建二叉樹的方法

    這篇文章主要介紹了Python利用前序和中序遍歷結(jié)果重建二叉樹的方法,實例分析了Python二叉樹的定義與遍歷操作技巧,需要的朋友可以參考下
    2016-04-04
  • Pytorch:Conv2d卷積前后尺寸詳解

    Pytorch:Conv2d卷積前后尺寸詳解

    這篇文章主要介紹了Pytorch:Conv2d卷積前后尺寸,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn)

    pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn)

    drop_duplicates 方法實現(xiàn)對數(shù)據(jù)框 DataFrame 去除特定列的重復(fù)行,本文主要介紹了pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Python字符串處理實現(xiàn)單詞反轉(zhuǎn)

    Python字符串處理實現(xiàn)單詞反轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Python字符串處理實現(xiàn)單詞反轉(zhuǎn)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • python清空命令行方式

    python清空命令行方式

    今天小編就為大家分享一篇python清空命令行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中單線程、多線程和多進(jìn)程的效率對比實驗實例

    Python中單線程、多線程和多進(jìn)程的效率對比實驗實例

    這篇文章主要介紹了Python單線程多線程和多進(jìn)程效率對比,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python使用Web框架Flask開發(fā)項目

    Python使用Web框架Flask開發(fā)項目

    本文詳細(xì)講解了Python使用Web框架Flask開發(fā)項目的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • python-redis-lock實現(xiàn)鎖自動續(xù)期的源碼邏輯

    python-redis-lock實現(xiàn)鎖自動續(xù)期的源碼邏輯

    這篇文章主要介紹了python-redis-lock實現(xiàn)鎖自動續(xù)期的源碼邏輯,其中用到了多線程threading、弱引用weakref和Lua腳本等相關(guān)知識,需要的朋友可以參考下
    2024-07-07

最新評論

温泉县| 尼玛县| 榕江县| 钦州市| 绍兴市| 清新县| 布拖县| 莱阳市| 苍梧县| 富锦市| 隆昌县| 曲周县| 花莲县| 班玛县| 民丰县| 绵阳市| 西平县| 庆云县| 浑源县| 阿鲁科尔沁旗| 常德市| 盐源县| 汝州市| 哈尔滨市| 澎湖县| 阿拉善左旗| 吉水县| 阳高县| 普兰县| 乌什县| 彰化县| 通海县| 长宁区| 伊宁市| 定襄县| 抚顺县| 锡林郭勒盟| 惠水县| 绍兴县| 沙田区| 云浮市|