Django单元测试中Fixtures的使用方法


Posted in Python onFebruary 26, 2020

在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。

在对Django项目做单元测试时,我们需要一些初始的数据来作为检测结果的依据,那么对于我们已经有正式数据库的模块来说,使用Fixture载入数据是简单有效的方法。

首先,你需要一份json格式的数据文件,Django对此提供了很好的支持—dumpdata 命令:

python manage.py dumpdata myapp >myapp/fixtures/myapp.json
# 这个命令将帮助你把数据库中myapp 导入到myapp/fixtures/test.json中
# 这个myapp可以没有,会把数据库所有数据生成Json文件

基础配置

在settings.py 中配置如下内容:

FIXTURE_DIRS = ('/path/to/api/fixtures/',)

接着在test.py中 加入:

fixtures = ['test.json']

 最后么当然是运行test命令了:

./manage.py test

示例代码

# coding=utf-8
from __future__ import unicode_literals
import json
from rest_framework import status
from rest_framework.test import APITestCase


class DjangoUnittest01(APITestCase):
 fixtures = ["my_test.json"]

 def setUp(self):

  data = {
   "username": 't1',
   "password": 'admin123',
   "code": 666,
  }
  self.client.post('/base/admin/login/', data)

 def test_usergroup_user_information(self):# 以test开头的方法将会执行

  url = '/base/admin/teacher/usergroup/21/user/4/information/?otype=soldier'
  response = self.client.get(url)
  data = {
   "update_date": "2018-05-31 16:22:55",
   "task": "196311177981753978",
   "otype": "soldier",
   "task_name": "f_test1",
   "progress": 1.0,
   "id": 871
  }

  self.assertEqual(response.status_code, status.HTTP_200_OK)
  self.assertDictEqual(response.data["results"][0], data)

测试用例通过

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 3.863s

OK
Destroying test database for alias 'default'...

常用断言

assertEqual(a, b)  a == b  
assertNotEqual(a, b)  a != b  
assertTrue(x)  bool(x) is True  
assertFalse(x)  bool(x) is False  
assertIs(a, b)  a is b  
assertIsNot(a, b)  a is not b  
assertIsNone(x)  x is None 
assertIsNotNone(x)  x is not None 
assertIn(a, b)  a in b  
assertNotIn(a, b)  a not in b 
assertIsInstance(a, b)  isinstance(a, b) 
assertNotIsInstance(a, b)  not isinstance(a, b)
assertListEqual(a, b)  lists  
assertTupleEqual(a, b)  tuples 
assertDictEqual(a, b)  dicts

到此这篇关于Django单元测试中Fixtures用法详解的文章就介绍到这了,更多相关Django Fixtures内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解字典树Trie结构及其Python代码实现
Jun 03 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
Python机器学习之决策树算法
Dec 22 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Python拼接字符串的7种方法总结
Nov 01 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
python爬取酷狗音乐排行榜
Feb 20 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
python 解压、复制、删除 文件的实例代码
Feb 26 #Python
Python递归调用实现数字累加的代码
Feb 25 #Python
python烟花效果的代码实例
Feb 25 #Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 #Python
使用python绘制cdf的多种实现方法
Feb 25 #Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 #Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 #Python
You might like
php数组查找函数总结
2014/11/18 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP发送短信代码分享
2015/08/11 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
javascript的回调函数应用示例
2014/02/20 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
前端微信支付js代码
2016/07/25 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
微信小程序实现tab左右切换效果
2020/11/15 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
生日宴会答谢词
2014/01/09 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
初中班级口号
2014/06/09 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
交流会主持词
2015/07/02 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
初二数学教学反思
2016/02/17 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python