# 以在禪道上傳文件爲例:json
1、建立一個類,類裏面寫一個登陸方法:服務器
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() 方法
2、上傳圖片接口:cookie
# 文件上傳: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)
# 一、絕對路徑 二、open('1.jpg', 'rb') 三、content-type的值
}
# 上傳圖片的時候,不data和json,用files
r = self.s.post(url2, files=body) # 一、調用全局的s,用self.s 二、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方法
3、編寫、執行測試用例:session
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方法