python接口自動化測試——文件上傳


# 以在禪道上傳文件為例:

 

一、創建一個類,類里面寫一個登錄方法:

import requests
class LoginZentao():

def __init__(self, s): # 初始化
self.s = s # 定義一個全局的s

def login(self):
r = self.s.post() # self.s調用全局的s
pass

if __name__=='__main__':
s = requests.session()
zentao = LoginZentao(s) # 類實例化為對象,傳入參數s
zentao.login() # 調用zentao里面的login() 方法

 

二、上傳圖片接口:

# 文件上傳:content-Type:  multipart/form-data類型
import requests

class SendFile():
def __init__(self, s):
self.s = s

def sendImg(self, jpgpath, jpgname='1.jpg', jpgtype='image/jpeg'):

# 登錄並更新cookies
f = open('1.jpg', 'rb') # 絕對路徑
url2 = ''
body = {
'localurl': (None, jpgname),
'imgFile': ('1.jpg', open(jpgpath, 'rb'), jpgtype)
# 1、絕對路徑 2、open('1.jpg', 'rb') 3、content-type的值
}
# 上傳圖片的時候,不data和json,用files
r = self.s.post(url2, files=body) # 1、調用全局的s,用self.s 2、files
print(r.text)
# 上傳到服務器,每傳一次地址都不一樣

# 解決拋異常
try:
jpg_url = r.json()['url'] # (相對路徑)
print(jpg_url)
return jpg_url

except Exception as msg: # 返回報錯信息
print('圖片上傳失敗,原因:%s'%msg) # 打印報錯信息
# raise # 主動拋原始異常
# raise ··· # 拋出異常內容為:“···”
return ''

if __name__=='__main__':
s = requests.session()
from test.test_009_003_zentaologin import LoginZentao
# 調登錄方法
login = LoginZentao(s) # 實例化類LoginZentao為對象
login.login()
# 上傳文件
send = SendFile(s) # 把類sendfile()實例化為對象
send.sendImg() # 調用sendfile()里面的sendImg方法

三、編寫、執行測試用例:

import unittest
import requests
from test.test_009_003_zentaologin import LoginZentao # 從文件夾.文件名導入LoginZentao類
from test.test_009_002_sendfile import SendFile # 從文件夾.文件名導入sendfile類
import os

# 獲取文件路徑
parpath = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) # 定位當前文件夾
jpgpath = os.path.join(parpath, 'testdata', '1.jpg') # “testdata”:存放文件的文件夾名,“1.jpg”:文件名


class TestSendFile(unittest.TestCase):

@classmethod
def setUpClass(cls):
cls.s = requests.session()
# 實例化調用的類
cls.login = LoginZentao(cls.s ) # 實例化類LoginZentao為對象
cls.send = SendFile(cls.s) # 把類sendfile()實例化為對象

def test_01(self):
# 上傳文件:第一步,登錄
self.login.login()
# 第二步,傳文件
result = self.send.sendImg(jpgpath)
# 第三步:斷言:返回的結果里面包含'.jpg'
self.assertIn('.jpg', result)

# # 調登錄方法
# login = LoginZentao(s) # 實例化類LoginZentao為對象
# login.login()
# # 上傳文件
# send = SendFile(s) # 把類sendfile()實例化為對象
# send.sendImg() # 調用sendfile()里面的sendImg方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM