python接口自动化测试二十三:文件上传

# 以禅道为例:

一、创建一个类,类里面写一个登录方法:

import requestsclass 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 unittestimport requestsfrom 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方法



原文地址:https://www.cnblogs.com/zhongyehai/p/9160246.html

时间: 2024-10-08 23:46:03

python接口自动化测试二十三:文件上传的相关文章

python接口自动化测试七:文件上传

# 文件上传:content-Type:  multipart/form-data类型 import unittest import requests class SendFile():     def __init__(self, s):         self.s = s     def sendImg(self, jpgpath, jpgname='1.jpg', jpgtype='image/jpeg'):         # 登录并更新cookies         f = open

SpringMVC 理论与实用技术(二)文件上传

文件上传相信大家都做过,几乎所有的项目都有上传文件的功能,尤其是BS架构的项目中常常被列为常规功能来开发,无论是在开发.NET 项目还是java项目我们会用到很多的框架,这个功能也被集成到了框架之中,因为他太常用了,框架就是为我们提供了一个开发项目的半成品结构,可以大大提高开发效率节省开发成本.缩短开发周期. 长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传,附加说说上传文件的原理. 从具体的某个实例开始,先形似再神思 第一种方式设计思路:三个注意地方 1.表单页面 2

python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

def upload(url,params): ''' 上传文件到服务器,不适合大文件 @params url 你懂的 @params {"action":"xxx","@file","file_path"} 普通参数 key:value 文件key头部加@ ''' import os import urllib2 BOUNDARY = "0450de9528f040078csuxianbaozic06"

python运维开发(二十一)----文件上传和验证码+session

内容目录: 文件上传 HTML Form表单提交 ajax提交 原生ajax提交 jQuery Ajax提交 验证码+session 文件和图片的上传功能

基于python的selenium两种文件上传操作

方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情况: 1.AutoIt  去调用它生成的au3或者exe格式的文件 2.SendKeys第三方库(目前只支持到2.7版本) 网址:https://pypi.python.org/pypi/SendKeys 3.Python的pywin32库,通过识别对话框句柄来

python接口自动化测试(二)-requests.post()

上一节介绍了  requests.get()  方法的基本使用,本节介绍  requests.post()  方法的使用: 本文目录: 一.方法定义 二.post方法简单使用 1.带数据的post 2.带header的post 3.带json的post 4.带参数的post 5.普通文件上传 6.定制化文件上传 7.多文件上传 一.方法定义: 1.到官方文档去了下requests.post()方法的定义,如下: 2.源码: 3.常用返回信息: 二.post方法简单使用: 1.带数据的post:

以调用接口的方式将文件上传至Web服务器

前台代码: <form id="form1" action="http://www.abc.com/data/UploadFile.aspx" method="post" enctype="multipart/form-data" > <input type="file" name="F" style="width:160px;" /> <

用python脚本把windows的文件上传到linux中

import paramiko hostname = '192.168.1.1' #linux主机IP地址 port = 22 #端口 username = 'root' #用户名 password = '123qwe' #密码 t=paramiko.Transport((hostname,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) sftp.

SpringMVC基础(二)_文件上传、异常处理、拦截器

实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:multipart/form-data(默认为:application/x-www-form-urlencoded):enctype为表单请求正文的类型:method 属性必须取值为 post 方式:提供一个文件选择域: <input type="file"/> : <for