# 以禅道为例:

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

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接口自动化测试二十三:文件上传的更多相关文章

  1. python接口自动化测试——简单的文件上传代码实现,人人网登陆后上传图片举例

    import requests '''人人网登陆,图片上传 '''def loginData(): '''登录请求参数''' data = { 'email': '13484545195', 'ico ...

  2. 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 ...

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

    内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...

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

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...

  5. Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail

    文件上传概述      1.文件上传的作用          例如网络硬盘,就是用来上传下载文件的.          在网络浏览器中,时常需要上传照片 2.文件上传对页面的要求          上 ...

  6. 用SpringMVC实现的上传下载方式二(多文件上传)

    参考来源:      http://blog.csdn.net/qq_32953079/article/details/52290208 1.导入相关jar包 commons-fileupload.j ...

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

    实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...

  8. requests接口自动化7-Multi/form-data文件上传形式的post请求:files

    Multi/form-data文件上传形式的post请求:用files传参 fiddler里请求响应内容; 代码: import requests from requests_toolbelt imp ...

  9. python利用socket写一个文件上传

    1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中 2.代码: #模拟服务端 import subprocess import os import sock ...

随机推荐

  1. 面向对象【day07】:类的实例化过程剖析(三)

    本节内容 1.概述 2.类的语法 3.总结 一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 ...

  2. Hbase记录-Hbase其他工具

    1.RowCounter工具可以查看某张表有多少行,效率非常高 2.count命令在数据量大的时候效率非常差 执行./hbase  org.apache.hadoop.habse.mapreduce. ...

  3. oracle解除锁表【原】

    在日常操作中,经常会有不小心被锁表的情况发生 一般造成原因有: 开发人员不小心执行了 for update 查询语句后,没有解锁 不合理代码中开启事务(begin transaction)后,没有关闭 ...

  4. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1) C.Producing Snow

    题目链接  题意  每天有体积为Vi的一堆雪,所有存在的雪每天都会融化Ti体积,求出每天具体融化的雪的体积数. 分析 对于第i天的雪堆,不妨假设其从一开始就存在,那么它的初始体积就为V[i]+T[1. ...

  5. gcc和gdb使用笔记

    gcc: http://wiki.ubuntu.org.cn/Gcchowto gdb: http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%9 ...

  6. 在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法?

    问题描述:在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法? 问题解答: 你可以在TextObject.Hyperlink对象中编写js代码(javascript: ...

  7. 三、内存管理单元---MMU

    3.1 MMU介绍 3.1.1 MMU 特性 内存管理单元(Memory Management Unit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.现在的多用户多进 ...

  8. Linux 4.10.8 根文件系统制作(二)---制作jiffs文件系统

    一.制作jiffs文件系统 制作jffs2 文件系统需要用到 mkfs.jffs2工具. 执行命令: mkfs.jffs2 -n -s 0x800 -e 0x20000  --pad=0x800000 ...

  9. spfa判负环

    bfs版spfa void spfa(){ queue<int> q; ;i<=n;i++) dis[i]=inf; q.push();dis[]=;vis[]=; while(!q ...

  10. 转载 int和string 类型的互换

    https://blog.csdn.net/u012421436/article/details/51386690 不论是在什么语言下编程(除C,因为C是没有string类型的),int与string ...