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爬虫之urllib2使用指南
Nov 05 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python 处理数据的实例详解
Aug 10 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
Python实现修改文件内容的方法分析
Mar 25 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
Python实现App自动签到领取积分功能
Sep 29 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
修复ie8&chrome下window的resize事件多次执行
2011/10/20 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
发布Angular应用至生产环境的方法
2018/12/10 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python实现装饰器、描述符
2018/02/28 Python
pytorch permute维度转换方法
2018/12/14 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
如何获取Python简单for循环索引
2019/11/21 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2015年共青团工作总结
2015/05/15 职场文书
追悼会悼词大全
2015/06/23 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Nginx安装配置详解
2022/06/25 Servers
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript