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接口自动化测试二十三:文件上传的主要内容,如果未能解决你的问题,请参考以下文章

API接口自动化测试框架搭建(二十三)-框架主入口main.py设计&测试报告调用和生成

python接口自动化测试二十二:文件下载

python接口自动化测试二十九:yaml配置文件的写和读

python入门(二十一):基于文件的接口自动化框架

python接口自动化测试二十:函数写接口测试

python接口自动化测试十三:url编码与解码