• 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方法

  • 相关阅读:
    t
    溢出
    https://stackoverflow.com/questions/45591594/fetch-does-not-send-headers
    显示在用户屏幕上的缩略图
    cache buffer
    LZW
    t
    指针悬挂
    使用Linux服务器来通过网络安装和激活Windows 7 —— 一些基本原理
    在C++中如何动态分配一个二维数组
  • 原文地址:https://www.cnblogs.com/malinalian/p/10491795.html
Copyright © 2020-2023  润新知