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接口自动化测试二十三:文件上传的更多相关文章
- python接口自动化测试——简单的文件上传代码实现,人人网登陆后上传图片举例
import requests '''人人网登陆,图片上传 '''def loginData(): '''登录请求参数''' data = { 'email': '13484545195', 'ico ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- python运维开发(二十一)----文件上传和验证码+session
内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...
- 基于python的selenium两种文件上传操作
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...
- Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail
文件上传概述 1.文件上传的作用 例如网络硬盘,就是用来上传下载文件的. 在网络浏览器中,时常需要上传照片 2.文件上传对页面的要求 上 ...
- 用SpringMVC实现的上传下载方式二(多文件上传)
参考来源: http://blog.csdn.net/qq_32953079/article/details/52290208 1.导入相关jar包 commons-fileupload.j ...
- SpringMVC基础(二)_文件上传、异常处理、拦截器
实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...
- requests接口自动化7-Multi/form-data文件上传形式的post请求:files
Multi/form-data文件上传形式的post请求:用files传参 fiddler里请求响应内容; 代码: import requests from requests_toolbelt imp ...
- python利用socket写一个文件上传
1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中 2.代码: #模拟服务端 import subprocess import os import sock ...
随机推荐
- Linux下环境变量设置技巧
Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置 区别: 1.两个文件都是设置环境变量文件的,/etc/profile是 ...
- MYCAT分库分表
一.整体架构 1.192.168.189.130:mysql master服务,两个数据库db_store.db_user,db_store做了主从复制 db_user: 用户表users为分片表 数 ...
- Ant基础知识2
Ant: 1.在windows上搭建Ant环境,成功后查看版本号 答案: (1)安装jdk,配置环境变量 (2)安装ant,配置环境变量,添加ANT_HOME,在path中加入%ANT_HOME%\b ...
- python 小程序,打印数字
要求如下: 指定一个数字 x ,然后打印 1到x 的所有数字,并问是否继续打印,否退出程序,是就继续.再指定一个数字 y ,如果 y> x 就显示 x+1 到 y 的所有数字,y <= x ...
- IPv4套接字地址结构
一.IPv4套接字地址结构(POSIX定义) (1)长度字段sin_len是为增加对OSI协议的支持而随4.3BSD-Reno添加的:并不是所有的厂家都支持套接字地址结构的长度字段,而且POSIX规范 ...
- GBK-----UTF-8编码格式问题浅析
首先,想必大家在不同环境下切换写代码的时候,都会遇见乱码的时候(读取二进制的时候采用的编码和最初将字符转换成二进制时的编码不一致.),大多数人都知道,只需要把项目工程的编码格式调整一下为最初的编码就可 ...
- MyBatis向数据库中批量插入数据
Foreach标签 foreach: collection:指定要遍历的集合; 表示传入过来的参数的数据类型.该参数为必选.要做 foreach 的对象,作为入参时,List 对象默认用 list 代 ...
- Winfrom多文档界面实现
Winfrom多文档界面实现 闲来无事,研究了下比较常用的多文档界面风格,网上找了好多例子,最终实现.记录一下 废话不多说,先上个效果: 默认打开我的桌面,首页不允许关闭,xtraTabPage动态添 ...
- JavaScript之判断参数的数值的详细类型
//判断是否为字符串 //返回类型: //{baseType:typeof(arg),numberType:'int','float',-1} function numberType(arg){ va ...
- mysql 原理 ~ change buffer
一 简介:今天咱们来聊聊mysql的change buffer二 详细说明 1 +-change Buffer和数据页一样,也是物理页的一个组成部分,数据结构也是一颗B+树,这棵B+树放在共享表空 ...