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中getaddrinfo()基本用法实例分析
Jun 28 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
Django实现分页功能
Jul 02 Python
python 爬取疫情数据的源码
Feb 09 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python中super()函数的理解与基本使用
Aug 30 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
异步传递消息系统的作用
2016/05/01 面试题
怎样写好创业计划书的内容
2014/02/06 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫