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入门之modf()方法的使用
May 15 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
python抽象基类用法实例分析
Jun 04 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
Python实现多属性排序的方法
Dec 05 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 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获取数组最后一个值的2种方法
2015/01/21 PHP
提高php编程效率技巧
2015/08/13 PHP
jQuery的学习步骤
2011/02/23 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
python实现文法左递归的消除方法
2020/05/22 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
《有趣的发现》教学反思
2014/04/15 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python
vue elementUI批量上传文件
2022/04/26 Vue.js