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 相关文章推荐
python使用新浪微博api上传图片到微博示例
Jan 10 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
python实现BackPropagation算法
Dec 14 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
Python3爬楼梯算法示例
Mar 04 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
详解python中的闭包
Sep 07 Python
python 常用的异步框架汇总整理
Jun 18 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 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
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
js 表格隔行颜色
2009/12/02 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
python 爬取疫情数据的源码
2020/02/09 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
几个MySql的面试题
2013/04/22 面试题
大专应届生个人的自我评价
2013/11/21 职场文书
快餐公司创业计划书
2014/04/29 职场文书
购房委托书
2014/10/15 职场文书
运动会宣传稿50字
2015/07/23 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android