python接口自动化测试二十三:文件上传
Posted 向前走。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法
以上是关于python接口自动化测试二十三:文件上传的主要内容,如果未能解决你的问题,请参考以下文章