Python Django框架单元测试之文件上传测试示例


Posted in Python onMay 17, 2019

本文实例讲述了Python Django框架单元测试之文件上传测试。分享给大家供大家参考,具体如下:

Submitting files is a special case. To POST a file, you need only provide the file field name as a key, and a file handle to the file you wish to upload as a value. For example:

>>> c = Client()
>>> with open('test.jpg') as fp:
...   c.post('/account/avatar_upload/',{'avatar':fp})

测试文件上传其实没有什么特殊的,只需要指定后端接受请求数据的对应键值即可

(The name avatar here is not relevant; use whatever name your file-processing code expects.)在这里avatar是关联的,对应着具体的后端处理程序代码,eg:

class Useravatar(View):
  def __init__(self):
    self.thumbnail_dir = os.path.join(STATIC_ROOT, 'avatar/thumbnails')
    self.dest_dir = os.path.join(STATIC_ROOT, 'avatar/origin_imgs')
  @method_decorator(login_required)
  def post(self, request):
    nt_id = request.session.get('user_id', 'default')
    user = User.objects.get(pk=nt_id) if User.objects.filter(pk=nt_id).exists() else None
    avatarImg = request.FILES['avatar']
    if not os.path.exists(self.dest_dir):
      os.mkdir(self.dest_dir)
    dest = os.path.join(self.dest_dir, nt_id+"_avatar.jpg")
    with open(dest, "wb+") as destination:
      for chunk in avatarImg.chunks():
        destination.write(chunk)
    if make_thumb(dest,self.thumbnail_dir):
      avartaPath = os.path.join(STATIC_URL, 'avatar/thumbnails', nt_id + "_avatar.jpg")
    else:
      avartaPath = os.path.join(STATIC_URL, 'avatar/origin_imgs', nt_id + "_avatar.jpg")
    User.objects.filter(nt_id=nt_id).update(avatar=avartaPath)
    return render(request, 'profile.html', {'user': user})

Python Django框架单元测试之文件上传测试示例

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
总结Python编程中函数的使用要点
Mar 20 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
对python requests的content和text方法的区别详解
Oct 11 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
python使用PyQt5的简单方法
Feb 27 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
python开根号实例讲解
Aug 30 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 #Python
Python Django框架实现应用添加logging日志操作示例
May 17 #Python
Python实现通过解析域名获取ip地址的方法分析
May 17 #Python
如何用C代码给Python写扩展库(Cython)
May 17 #Python
python实现坦克大战游戏 附详细注释
Mar 27 #Python
六行python代码的爱心曲线详解
May 17 #Python
python使用pygame模块实现坦克大战游戏
Mar 25 #Python
You might like
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
在类Unix系统上开始Python3编程入门
2015/08/20 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
旅游业大学生创业计划书
2014/01/31 职场文书
西柏坡观后感
2015/06/08 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
MySQL数据管理操作示例讲解
2022/12/24 MySQL