这篇文章主要介绍了Django单元测试中Fixtures用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用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内容请搜索爱安网以前的文章或继续浏览下面的相关文章希望大家以后多多支持爱安网!

最新资讯
华为智能汽车蔡建永:当前智能汽车更像手机时代的山寨机

华为智能汽车蔡建永:当

华为智能汽车解决方案BU CTO蔡建永表示,当前市面上很多
逐鹿“飞行汽车”,通用、小鹏、吉利为何都来了?

逐鹿“飞行汽车”,通用

从这个角度来看,飞行汽车存在成本高企、应用场景有待开
美团互助关停,网络互助行业走到分水岭

美团互助关停,网络互助

这次关停可以理解为是整个网络互助行业的一个分水岭。
俄媒:脸书公司悄悄“解封”特朗普脸书账号和Ins账号

俄媒:脸书公司悄悄“解

“今日俄罗斯”(RT)16日最新消息,脸书公司悄悄恢复了美国
特斯拉首任中国区总经理郑顺景离世 多位好友发文悼念

特斯拉首任中国区总经

特斯拉首任中国区总经理郑顺景离世,原因未知,多位好友已
Jeff Dean万字长文:2020谷歌10大领域AI技术发展

Jeff Dean万字长文:202

2021年已经度过十余天,Jeff Dean也在酝酿后在Google AI
最新文章
在pycharm中为项目导入anacodna环境的操作方法

在pycharm中为项目导

这篇文章主要介绍了在pycharm中为项目导入anacodna环
tensorflow的ckpt及pb模型持久化方式及转化详解

tensorflow的ckpt及pb

今天小编就为大家分享一篇tensorflow的ckpt及pb模型持
PyTorch笔记之scatter()函数的使用

PyTorch笔记之scatter

这篇文章主要介绍了PyTorch笔记之scatter()函数的使用
python3实现网页版raspberry pi(树莓派)小车控制

python3实现网页版ras

这篇文章主要为大家详细介绍了python3实现网页版raspb
完美解决pycharm导入自己写的py文件爆红问题

完美解决pycharm导入

今天小编就为大家分享一篇完美解决pycharm导入自己写
pycharm内无法import已安装的模块问题解决

pycharm内无法import

今天小编就为大家分享一篇pycharm内无法import已安装