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 相关文章推荐
使用matplotlib画散点图的方法
May 25 Python
Django Rest framework三种分页方式详解
Jul 26 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python使用Excel将数据写入多个sheet
May 16 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Python datetime模块使用方法小结
Jun 18 Python
python实现磁盘日志清理的示例
Nov 05 Python
详解python爬取弹幕与数据分析
Nov 14 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python pygame入门教程
Jun 01 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生成图形(Libchart)实例
2013/11/06 PHP
jQuery live
2009/05/15 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
JS实现放大镜效果
2020/09/21 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
使用python Django做网页
2013/11/04 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python实现中文分词FMM算法实例
2015/07/10 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python的变量与赋值详细分析
2017/11/08 Python
python 解压pkl文件的方法
2018/10/25 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
医生个人自我剖析材料
2014/10/08 职场文书
中学校园广播稿
2015/08/18 职场文书
2016高考寄语集锦
2015/12/04 职场文书
创业计划书之便利店
2019/09/05 职场文书