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 httplib模块使用实例
Apr 11 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
python django事务transaction源码分析详解
Mar 17 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
对python中assert、isinstance的用法详解
Nov 27 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
利用python汇总统计多张Excel
Sep 22 Python
Pycharm安装python库的方法
Nov 24 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
python openpyxl模块的使用详解
Feb 25 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
PHP 学习路线与时间表
2010/02/21 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
canvas实现钟表效果
2017/02/13 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
Python类class参数self原理解析
2020/11/19 Python
python 将Excel转Word的示例
2021/03/02 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
车间班长岗位职责
2013/11/30 职场文书
精彩广告词大全
2014/03/19 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
关于运动会的广播稿
2015/08/19 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
python单元测试之pytest的使用
2021/06/07 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android