python自动化测试_7

接口测试:

文件下载:

Content-Type: octets/stream   一般为文件类型:
将返回数据,导入excel 表格存储

img

img

文件上传:

# 文件上传: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方法

img

测试:

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)

img

上传多个文件:

files = [("1.png", "1.png")
         ("2.png", "2.png")
        ]
def addFiles(files, n=1):
    file = []
    for i in list(range(n)):
        a =("files[]", (files[i][1], open(files[i][2], "rb"), "image/png"))
        b = ("labels[]", (None, '附件标题1')),
        ("files[]", ("2.png", open("d:\2.png", "rb"), "image/png")),
        ("labels[]", "tu2"),
        file.append(a)
        file.append(b)
        return file
原文地址:https://www.cnblogs.com/shaozheng/p/12875657.html